我想创建一个Y/N标志,其中Y表示给定行中每列中的每个有效值相等,否则为N. 我需要排除任何包含空值,空格或全零的列.假设:
CREATE TABLE z_test
(ID INT NOT NULL,
D1 VARCHAR(8)NULL,
D2 VARCHAR(8)NULL,
D3 VARCHAR(8)NULL,
D4 VARCHAR(8)NULL,
DFLAG CHAR(1)NULL)
INSERT INTO z_test VALUES (1,NULL,' ','000000','00000000',NULL)
INSERT INTO z_test VALUES (1,'20120101','0000','20120101','00000000',NULL)
INSERT INTO z_test VALUES (2,'20100101','20100101','20100101','20100101',NULL)
INSERT INTO z_test VALUES (2,'00000000','20090101','0','20090101',NULL)
INSERT INTO z_test VALUES (3,'00000000','20090101',NULL,'20120101',NULL)
INSERT INTO z_test VALUES (3,'20100101',' ',NULL,'20100101',NULL)
Run Code Online (Sandbox Code Playgroud)
所需的输出(不包括D1到D4,但我不想丢弃它们)是:
ID DFLAG
---------------
1 N
1 Y
2 Y
2 Y
3 N
3 Y
Run Code Online (Sandbox Code Playgroud)
速度不是一个问题,因为这个查询不会经常运行,但它在一个较大的表上.
任何指针或建议将非常感谢!!