这是我所拥有的一个例子:
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
上表是查询数据库时我的 CTE 的示例。在这个基本查询中,我通过使用月份控制(日期控制)表在缺少 FiscalPeriod 的地方添加了。这样做显然会创建具有空值的行。
我想要做的是将“帐户”、“公司”和“SegValue1”列中的 NULL 替换为包含每个帐户的 FiscalPeriod 等于“0”的行中的值。
例如,帐户“10-1156-000-”缺少会计期间为“2”的行。当使用monthControl 表添加该行时,除会计期间之外的所有列都包含空值。“Account”、“Company”和“SegValue1”列应包含会计期为“0”且帐户等于“10-1156-000-”的行中的 sam 值。在帐户“10-1157-000-”中缺少会计期间“1”。
查询拉出的帐户可能有任意数量,并且这些帐户中的任意数量可能缺少需要添加和填写的一个会计期间或多个会计期间。
预先感谢您的帮助!
这是我在给定情况下所需输出的示例:
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