Question

J'ai créé une seule table dans ma base de données principale appelée tblGlobalIDMapping , qui affectera un GUID à toutes les entrées et stockera les 3 autres ID principaux dans l'application pour fournir un référentiel d'identifiant unique.

La nouvelle table est dans la structure suivante - >

AppGlobalID     uniqueidentifier     NoNulls
PersonID        int                  NoNulls
DRIMaster       int                  Nulls
DRIClient       int                  Nulls

Les informations dont j'ai besoin sont dans une table dans une base de données différente (même serveur) avec la structure partielle suivante - >

PersonID                int             NoNulls
ApplicationID           tinyint         NoNulls
PersonApplicationID     varchar(14)     NoNulls

Une personne (numéro d’identification 13579) est représentée dans le deuxième tableau 1 pour chaque application. La colonne ApplicationID stocke un numéro, 1 pour DRIMaster et 6 pour DRIClient, qui indique le numéro d'identification de PersonApplicationID.

Je dois effectuer une copie / insertion en bloc de cette table vers ma nouvelle table, mais je ne souhaite qu'une ligne pour enregistrer les 3 identifiants principaux de la nouvelle table.

C’est ce que j’ai eu jusqu’à présent, mais cela renvoie une ligne pour chaque identifiant personnel.

SELECT PersonID, 
    CASE
        WHEN ApplicationID = 1
        THEN PersonApplicationID
    END AS 'DRIMaster', 
    CASE
        WHEN ApplicationID = 6
        THEN PersonApplicationID
    END AS 'DRIClient'
FROM tblApplicationAssociation
WHERE ApplicationID IN (1,6)

Ceci renvoie le texte ci-dessous - >

PersonID  DRIMaster   DRIClient
_______________________________
108574    71163       NULL
108574    NULL        71163
Était-ce utile?

La solution

Les agrégats ignorent les valeurs NULL, donc ....

SELECT PersonID, 
       Min(CASE
                WHEN ApplicationID = 1
                THEN PersonApplicationID
        END) AS 'DRIMaster', 
       Min(CASE
                WHEN ApplicationID = 6
                THEN PersonApplicationID
        END) AS 'DRIClient'
FROM tblApplicationAssociation
WHERE ApplicationID IN (1,6)
Group By PersonId
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top