【发布时间】:2019-09-24 23:52:07
【问题描述】:
使用 Advantage 数据库服务器 11 我试图逐年查找每个客户从两种类型的总购买量进行比较,但出现错误:
[iAnywhere 解决方案][Advantage 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而不是>=和<=(如WHEN date_in BETWEEN '2018-01-01' and '2018-12-31'),您的SQL 将更具可读性。您可能还会发现改用YEAR(date_in)更容易,并将该列添加到 GROUP BY。 -
谢谢,因为我只需要一年总年份最好,再次感谢仍在学习中。
标签: sql sum advantage-database-server