SQL:複数の行(tbl 2)から単一の行(tbl 1)を生成します。クロスDB
質問
tblGlobalIDMapping
という名前のプライマリDBに単一のテーブルを作成し、すべてのエントリに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
人(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
解決
集計は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
所属していません StackOverflow