2

我一直试图弄清楚这一点。我有一个表,其中有多行包含名称值对、类型和日期(为简单起见不包括在内)。它们都由一个id绑定。我想在按类型等于文档过滤的一行中输出与相同 id 相关的所有数据。

  插入表 1
    (id,名称,val,类型)
  价值观
    (111, '方向', '入站', '文件'),
    (111, '文件名', 'file.txt', '文档'),
    (111,'发送','FOO.SND','文档'),
    (111, 'rec', 'FOO.RCV', '文档'),
    (111,'无关','无关','业务'),
    (222,'方向','inbound2','文档'),
    (222, '文件名', 'file2.txt', '文档'),
    (222,'发送','FOO.SND2','文档'),
    (222,'rec','FOO.RCV2','document'),
    (222,'无关','unrelated2','业务'),
    (333,'方向','inbound3','文档'),
    (333, '文件名', 'file3.txt', '文档'),
    (333,'发送','FOO.SND3','文档'),
    (333,'rec','FOO.RCV3','document'),
    (333,“无关”,“无关3”,“业务”);

我要输出的是:

    id方向发送rec文件名
    111 入站 FOO.SND FOO.RCV 文件.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 回答