0

我在我的主数据库中创建了一个名为的表tblGlobalIDMapping,它将为所有条目分配一个 GUID,并在整个应用程序中存储其他 3 个主 ID,以提供单个 ID 存储库。

新表的结构如下-->

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

我需要的信息位于具有以下部分结构的不同数据库(同一服务器)中的表中->

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

对于每个应用程序,一个人(ID#13579)在第二个表 1 中表示。ApplicationID 列存储一个数字,1 代表 DRIMaster,6 代表 DRIClient,它告诉您 PersonApplicationID 中的 ID# 是什么。

我需要将该表中的批量复制/插入到我的新表中,但我只需要 1 行记录新表中的 3 个主 ID。

这是我到目前为止所拥有的,但这会为每个 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
4

1 回答 1

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
于 2009-07-29T15:44:13.710 回答