2014-03-07 27 views
4

我想將一些工作從CF服務器卸載到SQL Server(2008)。這是MSSQL CASE語句的好場景嗎?

我正在運行查詢,並且返回的statusID值對應於4種顏色之一(綠色,黃色,橙色和紅色)。

select id, statusID 
from table 

如果這是使用case語句的理想情況,這是正確的嗎?

select id, 
    case 
     when statusid in (1,20,24) 
      then 'red' 
    END as xxxx) as yyyy, * 
from TABLE 

如果這是正確的,什麼會進入上面的xxxx和yyyy?

+0

我發現http://stackoverflow.com/questions/63447/how-do-you-perform-an-if-then-in-an-sql-select,但我不知道怎麼樣將該示例翻譯成我的場景。 – HPWD

+0

我會考慮返回一個描述性的CSS類名稱。像「錯誤,警告,小心,確定」。這樣,如果你需要改變顏色,它是通過CSS而不是SQL –

+0

爲此提高投票:「我試圖從CF服務器卸載一些工作到SQL Server(2008)。」 –

回答

5

儘管您只希望最多一個AS爲該列提供名稱,但您可以擁有類似的內容(當然,我已經夢想了解值來說明選項):

SELECT  id, 
      CASE 
       WHEN statusid IN (1,20,24) THEN 'red' 
       WHEN statusid IN (2,30,34) THEN 'yellow' 
       WHEN statusid 8 THEN 'orange' 
       WHEN statusid > 35 THEN 'green' 
       ELSE 'unrecognised' 
      END AS ColorName, 
      statusid 

FROM  dbo.table 
+0

絕對完美。謝謝。當SO說足夠的時間已經失效時,我會批准它。 – HPWD