Select 来自 table 的 ID 的多条记录的单行数据
Select data in single row for multi records of an ID from table
我在 PostgreSQL 数据库中有以下 table
我想要一个可以产生以下结果的查询。
谢谢
试试这个 -
SELECT record_id
,MAX(CASE WHEN Node = 'A' THEN state) END AS A
,MAX(CASE WHEN Node = 'B' THEN state) END AS B
,MAX(CASE WHEN Node = 'C' THEN state) END AS C
FROM YOUR_TABLE
GROUP BY record_id
使用条件聚合。
SELECT record_id,
max(case when node = 'A' then state end) as A,
max(case when node = 'B' then state end) as B,
max(case when node = 'C' then state end) as C
FROM table1
group by record_id
order by record_id;
或
SELECT record_id,
min(case when node = 'A' then state end) as A,
min(case when node = 'B' then state end) as B,
min(case when node = 'C' then state end) as C
FROM table1
group by record_id
order by record_id;
结果:
record_id a b c
----------------------
1000000 CC CC CC
1000001 CC CC CC
1000002 CC CC CC
我在 PostgreSQL 数据库中有以下 table
我想要一个可以产生以下结果的查询。
谢谢
试试这个 -
SELECT record_id
,MAX(CASE WHEN Node = 'A' THEN state) END AS A
,MAX(CASE WHEN Node = 'B' THEN state) END AS B
,MAX(CASE WHEN Node = 'C' THEN state) END AS C
FROM YOUR_TABLE
GROUP BY record_id
使用条件聚合。
SELECT record_id,
max(case when node = 'A' then state end) as A,
max(case when node = 'B' then state end) as B,
max(case when node = 'C' then state end) as C
FROM table1
group by record_id
order by record_id;
或
SELECT record_id,
min(case when node = 'A' then state end) as A,
min(case when node = 'B' then state end) as B,
min(case when node = 'C' then state end) as C
FROM table1
group by record_id
order by record_id;
结果:
record_id a b c
----------------------
1000000 CC CC CC
1000001 CC CC CC
1000002 CC CC CC