1

次のフィールドとサンプル データを含む SQL Server テーブルがあります。

ID         Name   Address   Age
23052-PF   Peter  Timbuktu  25
23052-D1   Jane   Paris     22
23052-D2   David  London    24
23050-PF   Sam    Beijing   22
23051-PF   Nancy  NYC       26
23051-D1   Carson Cali      22
23056-PF   Grace  LA        28
23056-D1   Smith  Boston    23
23056-D2   Mark   Adelaide  26
23056-D3   Hose   Mexico    25
23056-D4   Mandy  Victoria  24

-PF を含む各 ID は、テーブル内で一意です。

-Dx を持つ各 ID は、-PF を持つ同じ ID に関連付けられます。

-PF を指定した各 ID は、-Dx を指定して 0 個以上の ID を持つことができます。

特定の -PF の -Dx 行の最大数は 9 です。

つまり、ID 11111-PF は、11111-D1、11111-D2、11111-D3 から 11111-D9 までを持つことができます。

上記のサンプル データに期待される出力:

ID        ID (without suffix)  PF_Name  PF_Address  PF_Age  D_Name   D_Address   D_Age
23052-PF  23052                Peter    Timbuktu    25      Jane     Paris       22
23052-PF  23052                Peter    Timbuktu    25      David    London      24
23050-PF  23050                Sam      Beijing     22      NULL     NULL        NULL
23051-PF  23051                Nancy    NYC         26      Carson   Cali        22
23056-PF  23056                Grace    LA          28      Smith    Boston      23
23056-PF  23056                Grace    LA          28      Mark     Adelaide    26
23056-PF  23056                Grace    LA          28      Hose     Mexico      25
23056-PF  23056                Grace    LA          28      Mandy    Victoria    24

上記のように -PF と -Dx に参加できる必要があります。

-PF の Dx 行が 0 の場合、出力の D_Name、D_Address、および D_Age 列は NULL を返す必要があります。

-PF に 1 つ以上の Dx 行がある場合、PF_Name、PF_Address、および PF_Age は出力の各行に対して繰り返され、D_Name、D_Address、および D_Age には関連する各 Dx 行の値が含まれている必要があります。

MSSQL を使用する必要があります。

クエリでビューを使用したり、追加のテーブルを作成したりしないでください。

ご助力いただきありがとうございます!

4

2 に答える 2

0
SELECT t1.ID, LEFT(t1.ID,5) "ID (without Suffix)",
    t1.Name "PF_Name", t1.Address "PF_Address", t1.Age "PF_Age",
    t2.Name "D_Name", t2.Address "D_Address", t2.Age "D_Age"
FROM PFTable t1
LEFT JOIN PFTable t2 on LEFT(t1.ID,5) = LEFT(t2.ID,5)
WHERE RIGHT(t1.ID,2) = 'PF'
于 2013-05-13T21:53:30.133 に答える