sql - SQL 用于每个客户每年的总销售额
问题描述
使用 Advantage Database Server 11 我试图逐年查找每个客户从两种类型的总购买量进行比较,但出现错误:
[iAnywhere 解决方案][Advantage SQL 引擎]未找到预期的词法元素:THEN
这是桌子。
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
解决方案
THEN
你的CASE
陈述中有遗漏
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
推荐阅读
- arrays - 在 Shell 脚本中将字符串转换为数组
- wai-aria - 使 aria-live 区域读取链接
- java - 从 pc 应用程序访问任何智能手机上的联系人和消息
- java - 仅使用队列在所有大小为 K 的连续子数组中查找最大元素
- python - 如果我更改值 test.i,类是否会像对象测试那样?
- python - Alembic 自动生成会在每次迁移时重新创建表
- instruction-set - 需要帮助解决基于8085指令集的汇编语言程序
- excel - fill every empty cell after a range of datas in the same column
- sql - 在日期范围内执行聚合函数
- php - Laravel 8.4 - “file_put_contents(/var/www/html/app/bootstrap/cache/packages.phpknHefj):无法打开流:权限被拒绝”