Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建透视表以显示计数并将缺少的月份添加为列_Sql_Pivot_Presto_Amazon Athena - Fatal编程技术网

Sql 创建透视表以显示计数并将缺少的月份添加为列

Sql 创建透视表以显示计数并将缺少的月份添加为列,sql,pivot,presto,amazon-athena,Sql,Pivot,Presto,Amazon Athena,原始表格 id month 1 10/2017 1 10/2017 1 11/2017 2 1/2017 2 3/2017 3 9/2016 3 9/2016 3 5/2017 3 6/2017 3 6/2017 3 10/2017 更新表: id 9/2016 10/2016 11/2016 12/2016 1/2017 2/2017 3/2017 4/2017 5/2017 6/2017 7/2017 8/2017 9/2017 10/2017 11/2017 1

原始表格

id month
1  10/2017
1  10/2017
1  11/2017
2  1/2017
2  3/2017
3  9/2016
3  9/2016
3  5/2017
3  6/2017
3  6/2017
3  10/2017
更新表:

id  9/2016 10/2016 11/2016 12/2016 1/2017 2/2017 3/2017 4/2017 5/2017 6/2017 7/2017 8/2017 9/2017 10/2017 11/2017
1   0      0       0       0       0      0      0      0      0      0      0      0      0      2       1
2   0      0       0       0       1      0      1      0      0      0      0      0      0      0       0
3   2      0       0       0       0      0      0      0      1      0      0      0      0      1       0
我通常使用python和pandas,所以我不确定如何在SQL中实现这一点

任何帮助都将不胜感激

更新到查询:

select
    sum(case when quarter = '2006-07-01' THEN 1 ELSE 0 END) AS '2006Q3',
    sum(case when quarter = '2006-10-01' THEN 1 ELSE 0 END) AS '2006Q4',
    sum(case when quarter = '2007-01-01' THEN 1 ELSE 0 END) AS '2007Q1',
    sum(case when quarter = '2007-04-01' THEN 1 ELSE 0 END) AS '2007Q2',
...
from trans_v3
group by core_id

好吧,你可以用暴力强迫它:

SELECT SUM(CASE WHEN month = '9/2016' THEN 1 ELSE 0 END) AS 201609
     , SUM(CASE WHEN month = '10/2016' THEN 1 ELSE 0 END) AS 201610
...
FROM t
GROUP BY id

SQL是静态类型语言。在查询开始执行之前,需要知道列的集合。这意味着您将需要在查询中嵌入此信息。(如@kjmerf answer中所示)。我稍微更改了列名,但得到了以下错误:
输入不匹配的“2016q3”
。我不确定这是怎么回事。你能分享整个问题吗?我想你已经解决了问题?