【问题标题】:SQL for total sales for each customer for each yearSQL 用于每个客户每年的总销售额
【发布时间】:2019-09-24 23:52:07
【问题描述】:

使用 Advantage 数据库服务器 11 我试图逐年查找每个客户从两种类型的总购买量进行比较,但出现错误:

[iAnywhere 解决方案][Adv​​antage SQL 引擎]预期 找不到词法元素:那么

这是表格。

customernr | Date_in | Status | InvType | Qty | Total
1111          9/1/2018            D         5    25.00
1111         12/1/2018   V        D         3    15.00
1111         5/12/2019            L         1     2.00
1111         7/11/2019            D         5    35.00
1112         6/21/2018            L         7    18.00
1112         9/14/2019            L         3     7.00


Select 
customernr,
SUM(CASE WHEN date_in >= '2018-01-01' and date_in <= '2018-12-31' total 
and InvType='D' ELSE 0 END) LastYD,
SUM(CASE WHEN date_in >= '2018-01-01' and date_in <= '2018-12-31' total 
and InvType='L' ELSE 0 END) LastYL,
SUM(CASE WHEN date_in >= '2019-01-01' and date_in <= '2019-12-31' total 
and InvType='D' ELSE 0 END) ThisYD,
SUM(CASE WHEN date_in >= '2019-01-01' and date_in <= '2019-12-31' total 
and InvType='L' ELSE 0 END) ThisYL

from invoice
where (Status <> 'V' or Status IS NULL)

Group by Customernr

感谢您的帮助,

KHJ

【问题讨论】:

  • 除了下面的答案之外,您会发现如果您使用BETWEEN 而不是&gt;= 和&lt;=(如WHEN date_in BETWEEN '2018-01-01' and '2018-12-31'),您的SQL 将更具可读性。您可能还会发现改用 YEAR(date_in) 更容易,并将该列添加到 GROUP BY。
  • 谢谢,因为我只需要一年总年份最好,再次感谢仍在学习中。

标签: sql sum advantage-database-server


【解决方案1】:

您的CASE 声明中缺少THEN

Select 
customernr,
SUM(CASE WHEN date_in >= '2018-01-01' and date_in <= '2018-12-31' 
and InvType='D' THEN total ELSE 0 END) LastYD,
SUM(CASE WHEN date_in >= '2018-01-01' and date_in <= '2018-12-31' 
and InvType='L' THEN total ELSE 0 END) LastYL,
SUM(CASE WHEN date_in >= '2019-01-01' and date_in <= '2019-12-31' 
and InvType='D' THEN total ELSE 0 END) ThisYD,
SUM(CASE WHEN date_in >= '2019-01-01' and date_in <= '2019-12-31' 
and InvType='L' THEN total ELSE 0 END) ThisYL

from invoice
where (Status <> 'V' or Status IS NULL)

Group by Customernr

【讨论】:

  • 谢谢,当您在第一行出错并复制并粘贴整个过程时,就会发生这种情况。
猜你喜欢
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多