MySQL Pivot 将记录转为列出所有数据的列

问题描述 投票:0回答:1

我有这样的桌子。

svcid hostid fieldname      fieldval                           date_chk
  1    9205    rawdata      raw data                           2018-07-27 05:14:47
  1    9205    rawdata      raw data                           2018-07-27 05:14:57
  1    9205    rawdata      raw data                           2018-07-27 05:20:24
  1    9205    dummyoutput  echo "you have running dummy.sh!"  2018-07-27 05:20:24
  1    9205    rawdata      raw data                           2018-07-27 05:21:04
  1    9205    dummyoutput  echo "you have running dummy.sh!"  2018-07-27 05:21:04

我想变成这样

svcid hostid  rawdata    dummyoutput                           date_chk
  1    9205   raw data   null                                  2018-07-27 05:14:47
  1    9205   raw data   null                                  2018-07-27 05:14:57
  1    9205   raw data   echo "you have running dummy.sh!"     2018-07-27 05:20:24
  1    9205   raw data   echo "you have running dummy.sh!"     2018-07-27 05:21:24

为了将来的信息我已经在这里创建了一个SQL小提琴

谢谢!

mysql sql database pivot
1个回答
1
投票

你可以试试这个。 聚合函数条件

CASE WHEN
MAX
功能和
group by

一起使用
SELECT svcid,
       hostid,
       max(CASE WHEN fieldname = 'rawdata' THEN fieldval  END), 
       max(CASE WHEN fieldname = 'dummyoutput' THEN fieldval  END),
       date_chk
FROM tb_service_out_monitor
GROUP BY  svcid,
       hostid,
       date_chk

sqlfiddle

© www.soinside.com 2019 - 2024. All rights reserved.