我有以下查询。
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 行。
帮助我克服它。
提前谢谢。
使用OR
和正确的括号:
SELECT * FROM #Temp1
WHERE [Label] = 'B'
OR ([Label] = 'A' AND [Value] > 20)
演示
尝试这样的事情:
SELECT * FROM #Temp1 WHERE ([Label] = 'A' AND [Value] > 20) OR (Label] = 'B')
试试这个:
SELECT * FROM #Temp1 WHERE [Label] = 'B'
UNION ALL
SELECT * FROM #Temp1 WHERE [Label] = 'A' AND [Value] > 20
或
SELECT * FROM #Temp1 WHERE ([Label] = 'B' ) OR ([Label] = 'A' AND [Value] > 20)
你可以在这里使用OR:
SELECT * FROM #Temp1 WHERE ( [Label] = 'B' ) OR ([Label] = 'A' AND [Value] > 20 )
试试这个:
SELECT *
FROM #Temp1
WHERE Label = 'B'
OR (Label = 'A'
AND value > 20)