我想在我的查询的WHERE子句中包含我正在使用的Id。请在下面找到我的问题: -
DECLARE @Table1 TABLE(ID INT,NAME VARCHAR(10))
INSERT INTO @Table1 VALUES(1,'A')
INSERT INTO @Table1 VALUES(2,'B')
INSERT INTO @Table1 VALUES(3,'C')
INSERT INTO @Table1 VALUES(4,'E')
INSERT INTO @Table1 VALUES(5,'E')
INSERT INTO @Table1 VALUES(6,'F')
SELECT * FROM @Table1
SELECT dbo.MyAgg(ID) AS Ids
FROM @Table1 T
WHERE T.NAME <> 'E'
AND T.ID <=5
它显示的输出是: -
1,2,3
但期望的输出是: -
1,2,3,5
谢谢,
的Rahul
答案 0 :(得分:1)
您应该删除T.NAME <> 'E'
条件
select dbo.MyAgg(ID)AS Ids
from @Table1 T
where T.ID <=5
答案 1 :(得分:1)
您可以使用UNION
这样执行此操作:
SELECT ID AS Ids
FROM Table1 T
WHERE T.NAME <> 'E'
AND T.ID <=5
UNION
SELECT ID AS Ids
FROM Table1 T
WHERE T.ID = 5
答案 2 :(得分:0)
从查询中删除条件
where T.NAME <> 'E'
因为它从结果集中删除了第5个id字段记录。这就是为什么你没有得到5个id的结果。
答案 3 :(得分:0)
使用OR而不是联合会不会更容易:
SELECT dbo.MyAgg(ID) AS Ids
FROM @Table1 T
WHERE (T.NAME <> 'E' OR T.ID = 5)
AND T.ID <= 5