SQL Query用于透视和组合行

时间:2016-09-03 14:35:29

标签: mysql

我有一张表,我需要从中得出结果,如下所示。

enter image description here

到目前为止,我能够转动F1并结合当前值和& mismatchcount使用下面的sql。

SELECT object, GROUP_CONCAT(currentvalue  ,"-", mismatchcount ) as F1
FROM tableT  where freq = F1
GROUP BY object

但我需要将所有三个freq彼此相邻作为输出。

1 个答案:

答案 0 :(得分:4)

您可以使用此查询:

SELECT   object, 
         GROUP_CONCAT(CASE freq WHEN 'F1' THEN
                         CONCAT(currentvalue, "-", mismatchcount) END SEPARATOR " ") as F1,
         GROUP_CONCAT(CASE freq WHEN 'F2' THEN
                         CONCAT(currentvalue, "-", mismatchcount) END SEPARATOR " ") as F2,
         GROUP_CONCAT(CASE freq WHEN 'F3' THEN
                         CONCAT(currentvalue, "-", mismatchcount) END SEPARATOR " ") as F3
FROM     tableT 
GROUP BY object

CONCAT函数用于连接同一记录中的值,GROUP_CONCAT用于连接不同记录中的这些值。 CASE WHEN表达式针对多个记录(具有freq的不同值)进行评估,从而返回多个值。但是在这些值中,非空值需要连接。分隔符设置为空格。