小编use*_*915的帖子

比较多个列,但只有那些具有有效值的列,如果all相等则创建y/n标志

我想创建一个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)

速度不是一个问题,因为这个查询不会经常运行,但它在一个较大的表上.

任何指针或建议将非常感谢!!

sql sql-server sql-server-2008

7
推荐指数
2
解决办法
1478
查看次数

标签 统计

sql ×1

sql-server ×1

sql-server-2008 ×1