sql - MySQL Select - Merge rows when number -
i show results in 1 row , separated column specific values.
mysql> +----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+---------------------+ -> | temp_series_id | co | dp | bo | dz | kt | kr | dr | gz | gp | pd | cd | date | -> +----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+---------------------+ -> | 272138 | 21.12 | null | null | null | null | null | null | null | null | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | 20.06 | null | null | null | null | null | null | null | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | 18.69 | null | null | null | null | null | null | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | null | 21.81 | null | null | null | null | null | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | null | null | 22.06 | null | null | null | null | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | null | null | null | 22.44 | null | null | null | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | null | null | null | null | 14.69 | null | null | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | null | null | null | null | null | 24.69 | null | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | null | null | null | null | null | null | 22.75 | null | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | null | null | null | null | null | null | null | 19.94 | null | 2017-08-20 14:06:46 | -> | 272138 | null | null | null | null | null | null | null | null | null | null | 24.5 | 2017-08-20 14:06:46 | -> +----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+---------------------+
how can merge rows one? group temp_series_id
, delete null values
select sql_no_cache temp_series_id, case when temp_details_id = 1 value end 'co', ... case when temp_details_id = 11 value end 'cd', date (select * temp_series order date desc limit 1) series inner join temp_object objects on series.id = objects.temp_series_id inner join temp_details details on details.id = objects.temp_details_id;
below can see result do
+----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+---------------------+ | temp_series_id | co | dp | bo | dz | kt | kr | dr | gz | gp | pd | cd | date | +----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+---------------------+ | 272138 | 21.12 | 20.06 | 18.69 | 21.81 | 22.06 | 22.44 | 14.69 | 24.69 | 22.75 | 19.94 | 24.5 | 2017-08-20 14:06:46 | +----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+---------------------+
use aggregation:
select sql_no_cache temp_series_id, max(case when temp_details_id = 1 value end) co, ... max(case when temp_details_id = 11 value end) cd, date (select * temp_series order date desc limit 1 ) series inner join temp_object objects on series.id = objects.temp_series_id inner join temp_details details on details.id = objects.temp_details_id group temp_series_id, date;
Comments
Post a Comment