我想创建一个新表,如下所示:
原始表:
site_id, site_period
1, period_a
2, period_b
2, period_c
3, period_d
4, period_a
4, period_b
所需表:
site_id, period_a, period_b, period_c, period_d
1, 1, 0, 0, 0
2, 0, 1, 1, 0
3, 0, 0, 0, 1
4, 1, 1, 0, 0
这可能是一个重复的问题,因为这是一个相对简单的问题,但我不知道用什么词汇来描述它以找到解决方案。我熟悉编码逻辑,但对sql查询不太熟悉。谢谢!
您可以使用
CREATE TABLE ... AS SELECT
和条件聚合。
CREATE TABLE desiredtable
AS
SELECT site_id,
count(CASE site_period
WHEN 'period_a' THEN
1
END) period_a,
...
count(CASE site_period
WHEN 'period_d' THEN
1
END) period_d
FROM originaltable
GROUP BY site_id;