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