SQL:複数の行(tbl 2)から単一の行(tbl 1)を生成します。クロスDB

StackOverflow https://stackoverflow.com/questions/1201128

  •  05-07-2019
  •  | 
  •  

質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top