출력

2011-10-07 2 views
1

내가 내 SQL 스크립트를 실행할 때 저장된 값의 이름을 변경하려고하는 동안 값 이름을 변경하는 방법 :출력

SELECT 
    PERSONNUM, 
    PAYCODENAME, 
    CAST(WFCTIMEINSECONDS AS FLOAT)/3600 AS Total_Hours 
FROM 
    VP_ALLTOTALS 
WHERE 
    Applydate >= '09/25/2011' AND 
    Applydate <= '10/01/2011' AND 
    PAYCODENAME IN ('Vacation' 
        ,'Sick Leave - Paid' 
        ,'Personal Business - Paid' 
        ,'Comp Time - Paid' 
        ) 

내가 휴가는 VAC, 병가되고 싶어 -로 유료을 SIC, 개인 사업 - PER이되도록 지불하고

+0

어떤 RDBMS를 사용하고 있습니까? –

답변

3

가장 쉬운 방법은 CASE 대체 목록입니다.

SELECT PERSONNUM 
     PAYCODENAME CASE WHEN 'Vacation' THEN 'VAC' 
         WHEN 'Sick Leave - Paid' THEN 'SIC' 
         WHEN 'Personal Business - Paid' THEN 'PER' 
         ELSE PAYCODENAME END AS PAYCODENAME 
     .... 
0

CASE 문을 사용

SELECT 
    PERSONNUM, 
    CASE PAYCODENAME 
    WHEN 'VACATION' THEN 'Vac' 
    WHEN 'Sick Leave - Paid' THEN 'SIC' 
    WHEN 'Comp Time - Paid' THEN 'PER' 
    ELSE PAYCODENAME 
    END, 
    cast(WFCTIMEINSECONDS as float)/3600 as Total_Hours 
FROM 
    VP_ALLTOTALS 
WHERE 
    Applydate >= '09/25/2011' AND 
    Applydate <= '10/01/2011' AND 
    PAYCODENAME in ('Vacation' 
    ,Sick Leave - Paid' 
    ,'Personal Business - Paid' 
    ,'Comp Time - Paid' 
    ) 
+0

-1 -'CASE'에'ELSE'가 없으면 명시 적으로 처리하지 않은 값은'NULL'이됩니다 – JNK

+0

@JNK 감사합니다 ... 고침. – garnertb

+0

그리고 지금 내 대답과 정확히 같지만 1 분 30 초 뒤에 게시했습니다. :) – JNK

0
당신은 장소에 그 위에 매핑으로 영구 테이블, 파생 테이블, 또는 공통 테이블 표현식 (당신의 RDBMS의 가용성에 따라)를 사용하고 가입 할 수 있습니다

목록의 in.

WITH PAYCODES(PAYCODENAME, LABEL) 
    AS (SELECT 'Vacation', 
       'VAC' 
     UNION ALL 
     SELECT 'Sick Leave - Paid', 
       'SIC' 
     UNION ALL 
     SELECT 'Personal Business - Paid', 
       'PER' 
     UNION ALL 
     SELECT 'Comp Time - Paid', 
       '') 
SELECT PERSONNUM, 
     LABEL AS PAYCODENAME, 
     CAST(WFCTIMEINSECONDS AS FLOAT)/3600 AS Total_Hours 
FROM VP_ALLTOTALS 
     JOIN PAYCODES 
     ON PAYCODES.PAYCODENAME = VP_ALLTOTALS.PAYCODENAME 
WHERE Applydate >= '09/25/2011' 
     AND Applydate <= '10/01/2011'