我有以下查询。
with cte0 as (
SELECT * FROM #Temp1 WHERE [Label] = 'B'
),
cte1 as (
SELECT * FROM #Temp1 WHERE [Label] = 'A' AND [Value] > 20
)
SELECT * FROM cte0
UNION ALL
SELECT * FROM cte1
条件非常简单。我从包含两列(即[Label]
和[Value]
的表格中获取所有记录,但不包括值< 20仅适用于[Label]
=" A"
数据:
Label Value
A 24
A 18
A 15
A 35
A 27
A 37
B 18
B 29
B 18
B 16
B 16
我使用上面提到的查询来做到这一点。但我想在不使用任何cte的情况下一行完成。
条件:只有[标签]具有" A",才需要选择除小于20的值以外的所有记录。要返回9行。
帮助我克服它。
提前致谢。
答案 0 :(得分:2)
尝试这样的事情:
SELECT * FROM #Temp1 WHERE ([Label] = 'A' AND [Value] > 20) OR (Label] = 'B')
答案 1 :(得分:2)
答案 2 :(得分:0)
试试这个:
SELECT * FROM #Temp1 WHERE [Label] = 'B'
UNION ALL
SELECT * FROM #Temp1 WHERE [Label] = 'A' AND [Value] > 20
OR
SELECT * FROM #Temp1 WHERE ([Label] = 'B' ) OR ([Label] = 'A' AND [Value] > 20)
答案 3 :(得分:0)
你可以在这里使用OR:
SELECT * FROM #Temp1 WHERE ( [Label] = 'B' ) OR ([Label] = 'A' AND [Value] > 20 )
答案 4 :(得分:0)
试试这个:
SELECT *
FROM #Temp1
WHERE Label = 'B'
OR (Label = 'A'
AND value > 20)