Учитывая таблицу входных данных, я хотел бы иметь набор o «столбцы флагов», которые описывают столбцы одного и того же журнала.Обновите многие столбцы флагов, учитывая значение других столбцов (значения NULL) в той же записи
- Я использую 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 заявления для каждой записи из-за " старый»2005 SQL версии):
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-кода. Спасибо!
Я только что попробовал его, но он устанавливает все флаги в 0. Я думаю, что должен быть какой-то трюк, чтобы добавить к 'when null', чтобы система попала в в этом случае любая идея? – TPPZ
попробуйте '..CASE value_x, когда IS NULL ..' –
Я также пробовал оператор' GROUP BY', но он дает мне ошибки, говорящие, что столбец в предложении 'HAVING' не содержится ни в агрегатной функции, ни в предложении GROUP BY. – TPPZ