SQL: Bestücken einreihig (TBL 1) aus mehreren Reihen (TBL 2); Quer DB
Frage
Ich habe erstellt genannt eine einzelne Tabelle in meiner primären DB tblGlobalIDMapping
, die eine GUID für alle Einträge zuweisen und speichern Sie die anderen drei primären IDs über die App für eine einzelne ID-Repository zur Verfügung zu stellen.
Die neue Tabelle ist in der folgenden Struktur ->
AppGlobalID uniqueidentifier NoNulls
PersonID int NoNulls
DRIMaster int Nulls
DRIClient int Nulls
Die Informationen, die ich brauche, sind in einer Tabelle in einer anderen DB (derselbe Server) mit der folgenden Teilstruktur ->
PersonID int NoNulls
ApplicationID tinyint NoNulls
PersonApplicationID varchar(14) NoNulls
Eine Person (ID # 13579) wird in der zweiten Tabelle 1 dargestellt für jede Anwendung. Die ApplicationID Spalte speichert eine Zahl, 1 für DRIMaster und 6 für DRIClient, die Sie, was in PersonApplicationID die ID # erzählt ist.
Ich brauche ein Bulk-Kopieren / Einfügen aus dieser Tabelle zu meinem neuen Tisch zu tun, aber ich mag nur 1 Zeile Aufzeichnung den 3 Haupt-IDs in der neuen Tabelle.
Das ist, was ich habe so weit, aber diese gibt eine Zeile für jede 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)
Dies gibt die unten ->
PersonID DRIMaster DRIClient
_______________________________
108574 71163 NULL
108574 NULL 71163
Lösung
Aggregate ignorieren NULL-Werte, so ....
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