Возможно, вам придется использовать уродливые выражения CASE
здесь:
UPDATE yourTable
SET Consistency = CASE WHEN [Aug-19] IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN [Sep-19] IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN [Oct-19] IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN [Nov-19] IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN [Dec-19] IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN [Jan-20] IS NOT NULL THEN 1 ELSE 0 END;
Обратите внимание, что необходимость сделать это является серьезным признаком того, что ваш дизайн таблицы базы данных не оптимален. Было бы намного лучше просто поддерживать один столбец даты. Тогда для получения значения не NULL
для каждого кода потребуется обычная операция GROUP BY
. Рассмотрим таблицу, похожую на следующую:
Code | Date | Val
ABC | '2019-08-01' | NULL
ABC | '2019-09-01' | 501.2
ABC | '2019-10-01' | 584.56
ABC | '2019-11-01' | NULL
ABC | '2019-12-01' | NULL
ABC | '2029-01-01' | NULL
DEF | '2019-08-01' | NULL
DEF | '2019-09-01' | NULL
DEF | '2019-10-01' | NULL
DEF | '2019-11-01' | 260.4
DEF | '2019-12-01' | 222
DEF | '2029-01-01' | 323.77
Теперь вам нужен только этот запрос:
SELECT
Code,
COUNT(Val) AS Consistency
FROM yourNewTable
GROUP BY
Code;