Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

select all rows with same column to separate columns in mysql

I have a table like this :

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

How to write select query to GROUP_CONCAT value for each sensor and ORDER BY depth to show this?

fkey | sensor1_values  |  sensor2_values
-----+-----------------+------------------
1    | 34,27           |  22,34,56 
2    | 12,24           |  56
3    | 43,89,97        |  NULL  
like image 835
Mojtaba Arvin Avatar asked Sep 18 '25 11:09

Mojtaba Arvin


1 Answers

Try using GROUP_CONCAT with a CASE expression to target each of the sensor data.

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;
like image 118
Tim Biegeleisen Avatar answered Sep 20 '25 05:09

Tim Biegeleisen