我在我的主数据库中创建了一个名为tblGlobalIDMapping
的表,它将为所有条目分配一个GUID,并在整个应用程序中存储另外3个主要ID,以提供单个ID存储库。
新表格的结构如下 - >
AppGlobalID uniqueidentifier NoNulls
PersonID int NoNulls
DRIMaster int Nulls
DRIClient int Nulls
我需要的信息是在具有以下部分结构的不同DB(同一服务器)的表中 - >
PersonID int NoNulls
ApplicationID tinyint NoNulls
PersonApplicationID varchar(14) NoNulls
每个应用程序的第二个表1中表示一个人(ID#13579)。 ApplicationID列存储一个数字,1表示DRIMaster,6表示DRIClient,它告诉您PersonApplicationID中的ID#是什么。
我需要从该表批量复制/插入到我的新表,但我只想在新表中记录3个主ID的1行。
这是我到目前为止所做的,但这会为每个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)
这将返回以下 - >
PersonID DRIMaster DRIClient
_______________________________
108574 71163 NULL
108574 NULL 71163
答案 0 :(得分:2)
聚合忽略空值,所以....
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