Gre*_*reg 11 sql t-sql sql-server sql-server-2005 case
在TSQL中有没有办法做这样的事情:
select a,b,c,
case
when a=1 then 5
when a=2 then 6
end as d
from some_table
where d=6
Run Code Online (Sandbox Code Playgroud)
实际的case语句真的很复杂,所以我试图避免在where子句中重复它?这有什么窍门吗?
(我认为在MySQL中使用"有d = 6"的技巧).
A-K*_*A-K 21
select
a, b, c
from (
select
a, b, c,
case
when a=1 then 5
when a=2 then 6
end as d
from some_table
) as t
where d=6
Run Code Online (Sandbox Code Playgroud)
这是使用CTE的好地方,例如:
WITH MassagedData (a, b, c, d) AS
(
select a, b, c,
case
when a=1 then 5
when a=2 then 6
end as d
from some_table
)
SELECT a,b,c
FROM MassagedData
where d=6
Run Code Online (Sandbox Code Playgroud)