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
实际的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
这是使用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