2013-10-09 57 views
0

良好的一天,每個人都實現案例,我有這個疑問:在TSQL

SELECT B.fld_ActionName, 
    ISNULL(A.COUNT, 0) count, 
    ISNULL(A.GRAMS, 0) grams, 
    ISNULL(A.PRINCIPAL, 0) principal 
FROM #PULLEDOUT A 
RIGHT JOIN Reference.tbl_RefAction B 
    ON A.OSD = B.fld_ActionID 
WHERE B.fld_ActionID IN (100, 200, 360, 454, 457) 

我希望從轉化上B.fld_ActionName的話,並如下

New   (still the same no change) 
Checked  (still the same no change) 
For Recall -->recall 
EL -->indexed EL 
Watch -->Scrap watch 

這可能嗎?如果是,那麼如何?我真的不知道case是否適用於此,我是TSQL的新手,我不知道如何實現它。

謝謝

+0

有你甚至GOOGLE了它?選中此:在TSQL CASE(http://www.codeproject.com/Articles/39103/A-Simple-Use-of-SQL-CASE-Expression) –

回答

1

試試這個:

SELECT 
    CASE b.fld_ActionName 
    WHEN 'For Recall' THEN 'recall' 
    WHEN 'EL' THEN 'indexed EL' 
    WHEN 'Watch' THEN 'Scrap watch' 
    ELSE b.fld_ActionName 
    END AS 'Action', 
    ISNULL(A.COUNT,0) AS 'count', 
    ISNULL(A.GRAMS,0) AS 'grams', 
    ISNULL(A.PRINCIPAL,0) AS 'principal' 
FROM #PULLEDOUT A 
RIGHT JOIN Reference.tbl_RefAction B 
ON A.OSD =B.fld_ActionID 
WHERE B.fld_ActionID in (100,200,360,454,457) 
+0

這個東西對我有用。謝謝 :) – user2705620

2
SELECT 
    CASE 
     WHEN B.fld_ActionName IN ('New','Checked') THEN B.fld_ActionName 
     WHEN B.fld_ActionName 'For Recall' THEN 'recall' 
     WHEN B.fld_ActionName 'EL' THEN 'indexed EL' 
     WHEN B.fld_ActionName 'Watch' THEN 'Scrap watch' 
    END, 
    ISNULL(A.COUNT,0) count, 
    ISNULL(A.GRAMS,0) grams, 
    ISNULL(A.PRINCIPAL,0) principal 
FROM #PULLEDOUT A 
    RIGHT JOIN Reference.tbl_RefAction B 
     ON A.OSD =B.fld_ActionID 
WHERE B.fld_ActionID in (100,200,360,454,457) 
+0

如何將我實現它在select語句? – user2705620

+0

@ AsshO.Le複製粘貼語句? –

+0

@ AsshO.Le我編輯了完整的SQL語句的答案。一探究竟。 –