如何将subquery
结果导入CASE
语句。
Select * from TestDb T
where T.LevelId IN (CASE T.Data WHEN 7 THEN (Select Data from dbo.Split('5,4',',')) ELSE 0 END)
欲望输出
对于ID为5和4的7-2行
其他匹配1行与0
误差
子查询返回的值超过一个。当子查询跟随=、!=、<、<=、>、>=或子查询用作表达式时,这是不允许的。
发布于 2017-08-22 08:36:01
你能试试:
Select *
from TestDb T
where T.DATA=7 AND T.LEVELID IN (Select Data from dbo.Split('5,4',','))
OR ((T.DATA IS NULL OR T.DATA<>7) AND T.LEVELID=0)
样本数据:
CREATE TABLE TESTDB (LEVELID INT, DATA INT);
INSERT INTO TESTDB values (4,7);
INSERT INTO TESTDB values (0,6);
INSERT INTO TESTDB values (0,NULL);
INSERT INTO TESTDB values (5,7);
INSERT INTO TESTDB values (6,7);
输出:
LEVELID DATA
4 7
0 6
0 NULL
5 7
https://stackoverflow.com/questions/45812614
复制相似问题