Вот пример того, что у меня есть:SQL QUERY заменить NULL значение в строке с другим значением
CREATE TABLE test1(Account varchar(50), FiscalPeriod int, OpenBalance decimal(18,3),debitamt decimal(18,3), company varchar(10), SegValue1 int);
INSERT INTO test1 VALUES('10-1155-000-', 0,1000000,0,'EII',1155);
INSERT INTO test1 VALUES('10-1155-000-', 1,0,45000,'EII',1155);
INSERT INTO test1 VALUES('10-1155-000-', 2,0,250,'EII',1155);
INSERT INTO test1 VALUES('10-1155-000-', 3,0,60000,'EII',1155);
INSERT INTO test1 VALUES('10-1156-000-', 0,55000,0,'EII',1156);
INSERT INTO test1 VALUES('10-1156-000-', 1,0,850,'EII',1156);
INSERT INTO test1 VALUES(NULL, 2,NULL,NULL,NULL,NULL);
INSERT INTO test1 VALUES('10-1156-000-', 3,0,4000,'EII',1156);
INSERT INTO test1 VALUES('10-1157-000-', 0,150000,0,'EII',1157);
INSERT INTO test1 VALUES(NULL, 1,NULL,NULL,NULL,NULL);
INSERT INTO test1 VALUES('10-1157-000-', 2,0,6000,'EII',1157);
INSERT INTO test1 VALUES('10-1157-000-', 3,0,100,'EII',1157);
SELECT * FROM test1
Приведенная выше таблица является примером того, что мой КТР выглядит, когда запрос базы данных. В этом базовом запросе я добавил в местах, где отсутствует FiscalPeriod, используя таблицу управления месяцем (контроль даты). Выполнение этого, очевидно, создает строки, которые имеют нулевое значение.
Что я хотел бы сделать, это заменить NULL в столбцах «Учетная запись», «Компания» и «SegValue1» со значениями из строки, содержащей FiscalPeriod, равную «0» для каждой учетной записи.
В качестве примера на счету «10-1156-000-» отсутствовала строка с фискальным периодом «2». Когда строка была добавлена с помощью таблицы monthControl, все, кроме столбца financialperiod, содержали Nulls. В столбцах «Учетная запись», «Компания» и «SegValue1» должно содержаться значение sam, которое находится в строке с фискальным периодом «0» И где учетная запись равна «10-1156-000-». На счету «10-1157-000-» отсутствовал финансовый период «1». Нули в этой строке должны быть заполнены данными из строки с фискальным периодом «0», а учетная запись равна «10-1157-000-».
Там может быть любое количество учетных записей, которые запрос вытягивает и любое количество этих счетов может быть отсутствует fiscalperiod или несколько fiscalperiods, которые должны быть добавлены и заполнены.
Заранее спасибо за вашу помощь!
Вот пример моего желаемого выхода для этой конкретной ситуации:
CREATE TABLE test1(Account varchar(50), FiscalPeriod int, OpenBalance decimal(18,3),debitamt decimal(18,3), company varchar(10), SegValue1 int);
INSERT INTO test1 VALUES('10-1155-000-', 0,1000000,0,'EII',1155);
INSERT INTO test1 VALUES('10-1155-000-', 1,0,45000,'EII',1155);
INSERT INTO test1 VALUES('10-1155-000-', 2,0,250,'EII',1155);
INSERT INTO test1 VALUES('10-1155-000-', 3,0,60000,'EII',1155);
INSERT INTO test1 VALUES('10-1156-000-', 0,55000,0,'EII',1156);
INSERT INTO test1 VALUES('10-1156-000-', 1,0,850,'EII',1156);
INSERT INTO test1 VALUES('10-1156-000-', 2,0,0,'EII',1156);
INSERT INTO test1 VALUES('10-1156-000-', 3,0,4000,'EII',1156);
INSERT INTO test1 VALUES('10-1157-000-', 0,150000,0,'EII',1157);
INSERT INTO test1 VALUES('10-1157-000-', 1,0,0,'EII',1157);
INSERT INTO test1 VALUES('10-1157-000-', 2,0,6000,'EII',1157);
INSERT INTO test1 VALUES('10-1157-000-', 3,0,100,'EII',1157);
SELECT * FROM test1
Вы можете добавить свой желаемый результат? – Teja
Я добавил желаемый результат. – Kevin
Это было бы намного проще с меньшим количеством данных для просмотра. Почему бы не показать только строки с нулевыми данными и строками, из которых вы хотите получить данные. –