Domanda

Ho creato una singola tabella nel mio DB principale chiamata tblGlobalIDMapping che assegnerà un GUID a tutte le voci e memorizzerà gli altri 3 ID primari sull'App per fornire un repository di ID singolo.

La nuova tabella è nella seguente struttura - >

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

Le informazioni di cui ho bisogno sono in una tabella in un diverso DB (stesso server) con la seguente struttura parziale - >

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

Una persona (ID # 13579) è rappresentata nella seconda tabella 1 per ogni Applicazione. La colonna ApplicationID memorizza un numero, 1 per DRIMaster e 6 per DRIClient, che indica a cosa serve l'ID # in PersonApplicationID.

Devo fare una copia / inserimento in blocco da quella tabella alla mia nuova tabella, ma voglio solo 1 riga per registrare i 3 ID principali nella nuova tabella.

Questo è quello che ho finora, ma questo restituisce una riga per ogni PersonID.

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)

Questo restituisce quanto segue - >

PersonID  DRIMaster   DRIClient
_______________________________
108574    71163       NULL
108574    NULL        71163
È stato utile?

Soluzione

Gli aggregati ignorano i null, quindi ....

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top