Учитывая таблицу входных данных, я хотел бы иметь набор "столбцов флагов", описывающих одноуровневые столбцы одной и той же записи.
- Я использую Microsoft SQL Server 2005.
- Прежде всего мне нужно загрузить данные в целевую таблицу, затем мне нужно выполнить проверки, чтобы поместить значения в эти столбцы флагов.
Скажем, например, у меня есть игрушечный стол, подобный следующему:
CREATE TABLE zzz_test
(
color VARCHAR(10),
value_x INTEGER ,
value_y INTEGER ,
value_x_FLAG bit ,
value_y_FLAG bit
)
Затем у меня есть следующие игрушечные данные (мне нужно повторять операторы INSERT/VALUES для каждой записи из-за «старой» версии SQL 2005 года):
INSERT zzz_test(color,value_x,value_y)
VALUES('red',1,NULL)
INSERT zzz_test(color,value_x,value_y)
VALUES('green',NULL,NULL)
INSERT zzz_test(color,value_x,value_y)
VALUES('red',NULL,2)
INSERT zzz_test(color,value_x,value_y)
VALUES('red',1,3)
INSERT zzz_test(color,value_x,value_y)
VALUES('black',NULL,1)
INSERT zzz_test(color,value_x,value_y)
VALUES(NULL,3,2)
INSERT zzz_test(color,value_x,value_y)
VALUES('black',1,2)
INSERT zzz_test(color,value_x,value_y)
VALUES('red',3,4)
INSERT zzz_test(color,value_x,value_y)
VALUES('green',1,1)
INSERT zzz_test(color,value_x,value_y)
VALUES('blue',5,NULL)
Теперь я хотел бы иметь быстрый способ поместить значения в value_x_FLAG
и value_y_FLAG
, оценивая, являются ли родственные столбцы value_x
и value_y
NULL
.
Я знаю, что существуют такие функции, как ISNULL()
или COALESCE()
, но я не думаю, что это так, потому что я пытаюсь обновить столбец, учитывая значение другого столбца.
Я знаю, что могу использовать операторы IF / ELSE
, но довольно сложно установить все случаи многих логических флагов (2 ^ n) для совместной работы в одном и том же операторе «обновления» переменных флага.
Как с этим бороться?
После установки всех флагов я хотел бы как-то подытожить свою таблицу. Например, я хотел бы иметь COUNT
для всех переменных флага, тогда я хотел бы иметь COUNT
для "цветовой категории".
Возможно, мне не нужен набор переменных флага поддержки, но я бы хотел, чтобы они сделали таблицу намного более читаемой, а также код SQL намного более читабельным. Спасибо!