sql - CASE WHEN THEN 无法对包含聚合或子查询的表达式执行聚合函数
问题描述
这是我的代码:
SELECT SUM
(CASE
WHEN (dbo.EMBARQUE.EmbEst) = 0 THEN
0
WHEN (dbo.EMBARQUE.EmbEst) = 3 THEN
0
WHEN (dbo.EMBARQUE.EmbEst) = 6 THEN
0
WHEN (dbo.EMBARQUE.EmbEst) = 7 THEN
CASE
WHEN (SELECT COUNT (dbo.CUMPLIDO.CumpCod) from dbo.CUMPLIDO where dbo.CUMPLIDO.EmbCod = dbo.EMBARQUE.EmbCod and dbo.CUMPLIDO.CumpVol = 0) > 0 THEN
0
ELSE
dbo.EMBARQUE.EmbVol
END
ELSE
dbo.EMBARQUE.EmbVol
END) FROM dbo.EMBARQUE
解决方案
你里面有一个子查询sum()
。这是不允许的。此版本使用子查询来计算您想要的标志,然后将过滤逻辑移至WHERE
子句:
SELECT SUM(e.EmbVol)
FROM (SELECT e.*,
(CASE WHEN EXISTS (SELECT 1 FROM dbo.CUMPLIDO c WHERE c.EmbCod = e.EmbCod AND c.CumpVol = 0)
THEN 1 ELSE 0
END) as is_CumpVol_0
FROM dbo.EMBARQUE e
WHERE e.EmbEst NOT IN (0, 3, 6)
) e
WHERE e.EmbEst <> 7 OR is_CumpVol_0 = 0;
推荐阅读
- regex - 正则表达式条件正向前瞻
- node.js - .toString 不将字节编码为 utf8 文本?
- python-2.7 - 加快 matplotlib 动画中的线条绘制
- jquery - 导航栏的引导下拉菜单不起作用(角度)
- java - 更改相对于锚点的视图大小
- windows - 如何在 Windows 中设置 docker 音量?
- python - 我得到 TypeError: unhashable type: 'list',同时试图找到词频
- python - 在python中查找最后一个文件名
- python-3.x - wordsegement python库:ValueError:max()arg是一个空序列
- python - 将 ASCII 转换为轮廓 shapefile