2013-10-09 51 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语句的答案。一探究竟。 –