Sam*_*Sam 1 sql t-sql sql-server ssms ssms-2012
在盟友 CASE WHEN 条件作为列之后,我们可以过滤该列吗?
例子;
SELECT 
    CASE WHEN Number like '20%' THEN 'X'
   WHEN Number like '15%' or  Number like '16%'  THEN 'Y' ELSE 'Z'
   END Operation
   ,*
FROM 
TableA
where Operation like 'X'
Run Code Online (Sandbox Code Playgroud)
我将 CASE WHEN 条件称为“操作”,现在我只想在“操作”列中看到“X”操作。
有没有办法在 SSMS 2012 中使用 where 子句过滤 CASE WHEN 条件?
将您的查询包装为派生表,然后您可以将新列放在WHERE子句中:
select * 
from
(
    SELECT 
        CASE WHEN Number like '20%' THEN 'X'
       WHEN Number like '15%' or [Item Number] like '16%'  THEN 'Y' ELSE 'Z'
       END Operation
       ,*
    FROM 
    TableA
) dt
where Operation like 'X'
Run Code Online (Sandbox Code Playgroud)