select 具有相同列的所有行分隔 mysql 中的列

select all rows with same column to separate columns in mysql

我有一个这样的 table :

fkey | sensor | depth | value 
-----+--------+-------+-------
1    | 1      | 1     | 34
1    | 1      | 2     | 27
1    | 2      | 1     | 22
1    | 2      | 2     | 34
1    | 2      | 3     | 56
2    | 1      | 1     | 12
2    | 1      | 2     | 24
2    | 2      | 1     | 56
3    | 1      | 1     | 43
3    | 1      | 2     | 89
3    | 1      | 3     | 97

如何将 select 查询写入每个传感器的 GROUP_CONCAT 值和 ORDER BY 深度以显示这一点?

fkey | sensor1_values  |  sensor2_values
-----+-----------------+------------------
1    | 34,27           |  22,34,56 
2    | 12,24           |  56
3    | 43,89,97        |  NULL  

尝试使用 GROUP_CONCATCASE 表达式来定位每个传感器数据。

SELECT
    fkey,
    GROUP_CONCAT(CASE WHEN sensor=1 THEN value END ORDER BY depth) AS sensor1_values,
    GROUP_CONCAT(CASE WHEN sensor=2 THEN value END ORDER BY depth) AS sensor2_values
FROM yourTable
GROUP BY fkey;

通过替换 table 名称和列名称

试试这个查询

fkey 是 A 列 |传感器是 B 列 |深度是 C 列 |值为 D 列

select A, STUFF((SELECT ', ' + D FROM tableA b 
           WHERE b.A = a.A AND b.B = 1
          FOR XML PATH('')), 1, 2, '') sensor1_values  
          , STUFF((SELECT ', ' + D FROM tableA b 
           WHERE b.A = a.A AND b.B = 2
          FOR XML PATH('')), 1, 2, '') sensor2_values
from tableA a
group by A