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_CONCAT
和 CASE
表达式来定位每个传感器数据。
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
我有一个这样的 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_CONCAT
和 CASE
表达式来定位每个传感器数据。
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