我在我的主数据库中创建了一个名为 tblGlobalIDMapping 的表,它将为所有条目分配一个GUID,并在整个App中存储另外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
有帮助吗?

解决方案

聚合忽略空值,所以....

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top