#mysql
Вопрос:
Моя примерная таблица выглядит следующим образом:
Имя | Продажи | Задачи |
---|---|---|
Шон | 10 | 0 |
Марта | 20000 | 15 |
Стюарт | 0 | 5 |
Анджела | 0 | 0 |
Я пытаюсь добавить цветовой фильтр в свои инструкции case для лучшей идентификации строк
Я хочу, чтобы первые 3 строки были синими, так как они имеют некоторое значение в полях «продажи» и «задачи». В то время как для Анджелы я хочу, чтобы строка была белого цвета.
CASE WHEN `Sales` IS NOT NULL AND `Tasks` IS NOT NULL
THEN '#B7DAF5' (light blue)
ELSE '#FFFFFF' (white)
END
Он по-прежнему показывает каждую строку белым цветом.
Ответ №1:
0
это не то же NULL
самое, что . Кроме того, ваше условие обратное, оно только сделает его светло-голубым, ВСЕ поля не являются нулевыми; следовательно, Shawn
и Stewart
будут белыми.
Упростите его, используя положительное условие, а не отрицательное.
CASE WHEN `Sales` = 0 AND `Tasks` = 0
THEN '#FFFFFF' -- white
ELSE '#B7DAF5' -- light blue
END
Ответ №2:
В вашей примерной таблице нет нулей ни в одной из строк, если только вы не представляете NULL с 0 (ноль). В любом случае, я думаю, что было бы необходимо знать, какую клиентскую программу вы используете.
Ответ №3:
Примеры данных, которые вы помещаете, содержат 0
вместо NULL
, поэтому вы, возможно, захотите проверить, больше 0 вместо IS NOT NULL
.
select *,
CASE
WHEN Sales > 0 or Tasks > 0 THEN "#B7DAF5"
ELSE "#FFFFFF"
END as Color
from TableName