【问题标题】:Transposing data ( calculating monthly sales data) in sql在sql中转置数据(计算月销售数据)
【发布时间】:2018-03-31 23:35:48
【问题描述】:

我的数据共有 100 行

Day         Item    Price Unit
01/01/17    jeans     15   4
01/02/17    shirt     10   3
01/01/17    skirt     20   7
01/04/17    skirt     25   1
02/01/17    jeans     5   4
02/02/17    shirt    15   3
02/01/17    skirt     24   7
03/04/17    skirt     25   5

我希望 ro 将我的数据表示为 1 月和 2 月按项目的月销售额

数据应表示为

month jeans skirt shirt total
Jan
Feb

我的代码出错了

SELECT MONTH,
MAX(CASE WHEN ITEM = 'JEANS' THEN GRANDTOTAL END) GRANDTOTAL,
MAX(CASE WHEN ITEM = 'SHIRT' THEN GRANDTOTAL END) AS GRANDTOTAL,
MAX(CASE WHEN ITEM = 'SKIRT' THEN GRANDTOTAL END) AS GRANDTOTAL, 
FROM SALES 
GROUP BY MONTH ;

我尝试了所有方法但出现错误,请帮助:)

【问题讨论】:

  • 我的代码出现错误 SELECT MONTH, MAX( CASE WHEN ITEM = 'JEANS' THEN GRANDTOTAL END) GRANDTOTAL, MAX( CASE WHEN ITEM = 'SHIRT' THEN GRANDTOTAL END) AS GRANDTOTAL, MAX (情况下,项目 = '裙子',然后 GRANDTOTAL END)作为 GRANDTOTAL,按月来自销售组;
  • 你遇到了什么错误?
  • 如果@âńōŋŷXmoůŜ 的贡献回答了你的问题,你应该接受它。

标签: sql mysqli


【解决方案1】:

每件商品的销售额定义为价格 x 单位的总和,而总销售额是所有商品的销售额之和。

查看演示: http://sqlfiddle.com/#!9/2a9e8f/1

SELECT date_format(day, '%b') as `month`,
sum(case when item='jeans' then price*unit else 0 end) as jeans,
sum(case when item='shirt' then price*unit else 0 end) as shirts,
sum(case when item='skirt' then price*unit else 0 end) as skirts,
sum(price*unit) as total
FROM myTbl
where month(day) <= 2
GROUP BY date_format(day, '%b')
ORDER BY month(day);

result:
month   jeans   shirts  skirts  total
Jan       60      30         165         255
Feb   20        45       168         233

【讨论】:

  • 我收到错误,来自预期的关键字未找到,也只需要 1 月和 2 月的数据。这里价格代表销售额
  • 我更新了我的答案。它也没有语法错误,因为它有一个示例 dta 并导致 sqlfiddle.com:sqlfiddle.com/#!9/2a9e8f/1。请确保您正确复制和粘贴
  • 嘿,谢谢你的代码,我明白了,但由于价格本身就是销售价值,我认为它应该是总和(价格)作为总和。你能告诉我吗?
  • 如果您将销售额定义为价格值,那么您是正确的并且 sum(price) 是正确的。如果你喜欢我的 amswer,请点击检查按钮接受它
  • 嘿,我收到无效字符错误,可能是因为第一行命令中月份的连字符,代码在小提琴上工作正常,但是当我在 apex.oracle 中运行它时,我得到了无效字符错误..请指导我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多