2016-12-28 63 views
1

我想知道是否有方法使用case語句在同一select中返回的值?SQL Server:使用選擇案例的值

這將是這樣的:

SELECT 
    id, 
    name, 
    firstValue, 
    secondValue, 
    CASE 
     WHEN fistValue > secondValue 
      THEN firstValue 
     ELSE SecondValue 
    END as Value, 
    CASE 
     WHEN value > 5 
      THEN 'something' 
    END 
FROM 
    SomeTable 

但是,這將導致對價值無效的列名。

+1

不,這是不可能的 –

回答

2
;with cteSomeValues as 
(
Select 
     id, 
     name, 
     firstValue, 
     secondValue, 
     CASE WHEN fistValue > secondValue THEN firstValue ELSE SecondValue END as Value 
     FROM SomeTable 
) 
Select 
     id, 
     name, 
     firstValue, 
     secondValue, 
     Value, 
     CASE WHEN value > 5 then 'something' END 
FROM cteSomeValues 
0

你必須把兩個案件之間。

Select 
     id, 
     name, 
     firstValue, 
     secondValue, 
     CASE WHEN fistValue > secondValue THEN firstValue ELSE SecondValue END as Value, 
     CASE WHEN value > 5 then 'something' END 
     FROM SomeTable 
1

嘗試這個

;WITH CTE AS(
Select 
id,name,firstValue,secondValue, 
(CASE WHEN fistValue > secondValue THEN firstValue ELSE SecondValue END) as Value, 
FROM SomeTable 
) select id, name, firstValue,secondValue,case when value > 5 then 'something' END as VALUECOLUMN from cte 
0

另一個解決方法做到這一點是這樣的。

select t.id, 
     t.Name, 
     t.firstvalue, 
     t.secondvalue, 
     case 
     when t.value = 5 then 'something' 
     end 
from (SELECT id, 
       name, 
       firstValue, 
       secondValue, 
       CASE 
       WHEN fistValue > secondValue THEN firstValue 
       ELSE SecondValue 
       END as Value 
     FROM SomeTable 
    ) t