2

私はしばらくこれを理解しようとしてきました。名前と値のペア、タイプ、および日付を含む複数の行があるテーブルがあります (簡単にするために含まれていません)。それらはすべてIDによって関連付けられています。タイプ equals ドキュメントでフィルタリングされた 1 つの行に、同じ ID に関連するすべてのデータを出力したいと思います。

  INSERT INTO table1
    (ID、名前、値、タイプ)
  値
    (111、「方向」、「インバウンド」、「ドキュメント」)、
    (111、「ファイル名」、「file.txt」、「ドキュメント」)、
    (111、「送信」、「FOO.SND」、「ドキュメント」)、
    (111、「rec」、「FOO.RCV」、「ドキュメント」)、
    (111、「無関係」、「無関係」、「ビジネス」)、
    (222、「方向」、「インバウンド 2」、「ドキュメント」)、
    (222、「ファイル名」、「file2.txt」、「ドキュメント」)、
    (222、「送信」、「FOO.SND2」、「ドキュメント」)、
    (222、「rec」、「FOO.RCV2」、「ドキュメント」)、
    (222, '無関係', '無関係2', 'ビジネス'),
    (333、「方向」、「inbound3」、「ドキュメント」)、
    (333、「ファイル名」、「file3.txt」、「ドキュメント」)、
    (333、「送信」、「FOO.SND3」、「ドキュメント」)、
    (333、「rec」、「FOO.RCV3」、「ドキュメント」)、
    (333、「無関係」、「無関係3」、「ビジネス」);

私が出力しようとしているのは次のとおりです。

    id 方向 send rec ファイル名
    111 インバウンド FOO.SND FOO.RCV file.txt
    222 inbound2 FOO.SND2 FOO.RCV2 file2.txt
    333 inbound3 FOO.SND3 FOO.RCV3 file3.txt
4

1 に答える 1

0

ピボット クエリを試してください。

SELECT id,
       MAX(CASE WHEN name = 'direction' THEN val END) AS direction,
       MAX(CASE WHEN name = 'send'      THEN val END) AS send,
       MAX(CASE WHEN name = 'rec'       THEN val END) AS rec,
       MAX(CASE WHEN name = 'filename'  THEN val END) AS filename
FROM table1
GROUP BY id
于 2016-10-24T23:56:40.350 に答える