2016-12-28 21 views
1

同じselectのcase文によって返された値を使用する方法があるのだろうか?SQL Server:select caseの値を使用する

それはこのようなものになるだろう:

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

2つの場合の間に置く必要があります。

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 
関連する問題