Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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_Oracle_Group By_Case - Fatal编程技术网

SQL:从同一个表中聚合不同的月份

SQL:从同一个表中聚合不同的月份,sql,oracle,group-by,case,Sql,Oracle,Group By,Case,假设我有一张表,上面有产品的销售日期。唉,我无法在这里格式化表格,因此代码如下: table1: Product|Date|Sales -------|----|----- ProdA |1.1.|100 ProdB |1.1.| 50 ProdC |1.1.| 75 ProdA |2.1.|110 ProdB |2.1.| 60 ProdC |2.1.| 60 .... |... |... 我需要一个新表,其中包含每个月的销售总额: Product| Jan| Feb|..

假设我有一张表,上面有产品的销售日期。唉,我无法在这里格式化表格,因此代码如下:

table1:

Product|Date|Sales
-------|----|-----
ProdA  |1.1.|100
ProdB  |1.1.| 50
ProdC  |1.1.| 75
ProdA  |2.1.|110
ProdB  |2.1.| 60
ProdC  |2.1.| 60
....   |... |...
我需要一个新表,其中包含每个月的销售总额:

Product| Jan| Feb|...
-------|----|----|...
ProdA  |1234|1400|...
ProdB  | 234| 400|...
ProdC  | 524| 640|...
...    |... |... |...
我尝试使用带有CASE的SQL查询。[]中的文本是一个缩写,真正的表达是to_charto_month。。构建一个有效的模型

选择 产品 当[date==1]时,销售结束日期为1月, 当[date==2]时,销售结束日期为2月, 当[date==3]时,销售结束日期为3月, ... 从…起 表1 分组 产品 我有一个00979。00000-不是按表达式分组的错误

我知道我可以通过为每个月构建表来解决问题,然后再添加一些表,但这是低性能的。我还想了解,为什么构造不起作用

附言: -[Edit1]:这是一个Oracle数据库

尝试在案例陈述之前给出一致意见,在案例结束时给出一致意见

试着在案例陈述前达成一致,案例结束时达成一致


您使用的是哪种数据库管理系统?博士后?甲骨文?一个月到一个月我不确定我是否理解这一点。甲骨文没有“到月”功能。无论如何,最好将日期视为日期。我只是简化了这一点,因为它不相关,但删去的表达式是:to_Numberto_chardate,'MM'=2。日期字段实际上是一个日期。我想,有更好的方法,但那是可行的。你使用的是哪种数据库管理系统?博士后?甲骨文?一个月到一个月我不确定我是否理解这一点。甲骨文没有“到月”功能。无论如何,最好将日期视为日期。我只是简化了这一点,因为它不相关,但删去的表达式是:to_Numberto_chardate,'MM'=2。日期字段实际上是一个日期。我想,有更好的方法,但这是可行的。至少,这不会造成错误。第一次测试显示数据正确。有什么区别?为什么这样做?您在case语句中对数据进行了协商,所以它不会将其视为整个协商数据。这就是为什么它不是通过表达式显示一个组的原因。至少,它不会抛出错误。第一次测试显示数据正确。有什么区别?为什么这样做?您在case语句中对数据进行了协商,所以它不会将其视为整个协商数据。这就是为什么它不是通过表达式显示一个组
SELECT 
    Product,
    sum(CASE WHEN date = 1 THEN Sales END) AS Jan,
    SUM(CASE WHEN date = 2 THEN Sales END) AS Feb,
    SUM(CASE WHEN date = 3 THEN Sales END) AS Mar,
    ...
FROM
    table1
GROUP BY
    Product