0

tblGlobalIDMappingすべてのエントリに GUID を割り当て、他の 3 つのプライマリ ID をアプリ全体に保存して、単一の ID リポジトリを提供するという名前のプライマリ DB に単一のテーブルを作成しました。

新しいテーブルは次の構造にあります -->

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

必要な情報は、次の部分構造を持つ別の DB (同じサーバー) のテーブルにあります -->

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

個人 (ID# 13579) は、アプリケーションごとに 2 番目のテーブル 1 に表示されます。ApplicationID 列には、DRIMaster の場合は 1、DRIClient の場合は 6 の数値が格納され、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
4

1 に答える 1

2

集計は null を無視するので....

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 に答える