6 votes

Comment modifier le nom d'une valeur lors de l'édition

J'essaie de changer le nom d'une valeur stockée lorsque j'exécute mon script 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'
                     )

Je souhaite que la rubrique Vacances soit VAC, que la rubrique Congés de maladie payés soit SIC, que la rubrique Affaires personnelles - payées soit PER et que la rubrique

8voto

JNK Points 32743

La méthode la plus simple consiste à dresser une liste de CASE pour les substitutions.

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
       ....

3voto

garnertb Points 4775

Utiliser un CASE déclaration :

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'
    )

0voto

Martin Smith Points 174101

Vous pouvez utiliser une table permanente, une table dérivée ou une expression de table commune (sous réserve de disponibilité dans votre SGBDR) avec les correspondances et effectuer une jointure sur cette table à la place de l'expression de table permanente. in liste.

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'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X