代替識別子を持つ ID を保持するテーブルがあります。
ID| Alternate
1 | 100000000
1 | 8471
1 | 1248
2 | 578887518
2 | 8415
2 | 3574
3 | 100000000
3 | 1248
代替識別子には、9 桁と 4 桁の 2 種類があります。すべての ID には 9 桁の代替番号があり、次に最大 4 つの異なる 4 桁の番号があります。
私の問題は、テーブルが一意ではないことです。上記の ID の例 1 と 3 に似たケースが存在します。まだ見つかっていませんが、9 桁の ID は一致するが 4 桁の ID が異なるという状況もおそらく存在します。
ID | Alternate
5 | 200000000
5 | 1234
6 | 200000000
6 | 4567
私の目標は、テーブルを作成し、代替識別子の値にピボットすることですが、現在、同じユーザーに対して 2 つの行を取得しています。
誰かがこれを修正する方法を知っていますか?
現在のコード
SELECT ID, [THCI], [2101] , [2202], [2245]
FROM
(SELECT
T1.[ID],
T1.[IDENTIFIER],
CASE WHEN T2.[MAIN_IDENT] IS NULL THEN 'THCI' ELSE T2.[MAIN_IDENT] END AS PIV
FROM MYTABLE T1
LEFT OUTER JOIN TABLE2 AS T2 ON T2.[REFNO] = T1.[REFNO]
WHERE
(LEN(T2.[MAIN_IDENT]) = 4 OR T2.[MAIN_IDENT] IS NULL)
AND (LEN(T1.[IDENTIFIER]) = 4 OR LEN(T1.[IDENTIFIER]) = 9)
) AS SourceTable
PIVOT (MAX([IDENTIFIER]) FOR PIV IN ([THCI], [2245], [2202], [2101],[2345],[2303])) AS MYPIV
編集: 期待される出力は次のようになります。また、3 つではなく 4 つの代替識別子であることにも注意してください。
[ID] | [THCI] | [2245] | [2202] | [2101] | [2345]
1 | 100000000 | 4817 | 6824 | NULL | 1587
2 | 845279514 | 2359 | 7847 | 1234 | NULL
3 | 415784521 | 2415 | NULL | NULL | 8747