18

この形式のテーブルがあります (これは部分的なビューであり、テーブルには 100 を超える列が含まれています)。

 LOAN NUMBER   DOCUMENT_TYPE                DOCUMENT_ID
 992452533663  Voters ID                    XPD0355636
 992452533663  Pan card                     CHXPS5522D
 992452533663  Drivers licence              DL-0420110141769

1つのローン番号に対して、3種類の証拠書類があります。これらの詳細を列に変換して、次の形にしたいと思います。

LOAN NUMBER     VOTERS_ID    PAN_CARD     DRIVERS LICENCE
992452533663    XPD0355636   CHXPS5522D   DL-0420110141769

これについてどうすればいいですか?

4

3 に答える 3

15

次のように、 pivotqueryを使用して実行できます。

select * from (
   select LOAN_NUMBER, DOCUMENT_TYPE, DOCUMENT_ID
   from my_table t
)
pivot 
(
   MIN(DOCUMENT_ID)
   for DOCUMENT_TYPE in ('Voters ID','Pan card','Drivers licence')
)

これはsqlfiddle.comのデモです。

于 2013-11-08T11:40:12.920 に答える
8
 select * FROM doc_tab
    PIVOT
    (
    Min(document_id)
    FOR document_type IN ('Voters ID','Pan card','Drivers licence')
    ) 

outputs as this

ここに画像の説明を入力

SQLフィドルのデモはこちら

于 2013-11-08T11:48:37.567 に答える