【发布时间】:2020-06-09 19:54:07
【问题描述】:
我有一个表,其架构和数据 (table_name : raw_data) 看起来是这样的:
name | category | clear_date |
A | GOOD | 2020-05-30 |
A | GOOD | 2020-05-30 |
A | GOOD | 2020-05-30 |
A | GOOD | 2020-05-30 |
A | BAD | 2020-05-30 |
A | BAD | 2020-05-30 |
现在,如果我使用以下语句执行“groupby”操作:
SELECT name, category, date(clear_date), count(clear_date)
FROM raw_data
GROUP BY name, category, date(clear_date)
ORDER BY name
我得到以下答案:
name | caetgory | date | count |
A | GOOD |2020-05-30 | 4 |
A | BAD |2020-05-30 | 1 |
A | BAD |2020-05-31 | 1 |
为了生成以下格式的枢轴:
name | category | 2020-05-30 | 2020-05-31 |
A | GOOD | 4 | NULL |
A | BAD | 1 | 1 |
我正在使用以下查询:
select * from crosstab (
'select name, category, date(clear_date), count(clear_date) from raw_data group by name, category, date(clear_date) order by 1,2,3',
'select distinct date(clear_date) from raw_data order by 1'
)
as newtable (
node_name varchar, alarm_name varchar, "2020-05-30" integer, "2020-05-31" integer
)
ORDER BY name
但我得到的结果如下:
name | category | 2020-05-30 | 2020-05-31 |
A | BAD | 4 | 1 |
任何人都可以尝试建议我如何实现上述结果。似乎交叉表自动删除了 A 的重复条目。
【问题讨论】:
标签: postgresql pivot-table crosstab postgres-crosstab