SQL 用于每个客户每年的总销售额

Posted

技术标签:

【中文标题】SQL 用于每个客户每年的总销售额【英文标题】:SQL for total sales for each customer for each year 【发布时间】: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。 谢谢,因为我只需要一年总年份最好,再次感谢仍在学习中。 【参考方案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

【讨论】:

谢谢,当您在第一行出错并复制并粘贴整个过程时,就会发生这种情况。

以上是关于SQL 用于每个客户每年的总销售额的主要内容,如果未能解决你的问题,请参考以下文章

如何创建查询以显示本周 sql 的每个日期的总销售额 [关闭]

LeetCode:Database 91.按年度列出销售总额

SQL Server保存表的当前状态以进行报告[关闭]

SQL Server 2008 R2-查询以获取按月销售的总销售额和数量

SQL Server Management Studio 一个月的总销售额

如何显示每个产品的总订单销售额和产品相关信息。数据库服务器 2014