2013-10-09 5 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 

Возможно ли это? Если да, то как? Я действительно не знаю, применим ли случай к этому, я новичок в TSQL, и я не знаю, как его реализовать.

Спасибо

+0

Вы даже гугле это? Проверьте это: [CASE in TSQL] (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. Проверьте это. –