下面的查询生成以下错误消息:“无法对包含聚合或子查询的表达式执行聚合函数。”
我正在尝试从一个表中获取元素(贷款)的计数,该计数基于我已放入case语句中的特定条件。我使用了case语句,而不是简单地将条件插入WHERE子句中,因为我用这个查询提取了多个指标,而这些条件只适用于这个特定的指标,而不适用于其他指标。我怎么才能修复它?
SELECT COUNT(
CASE
WHEN (SELECT CONVERT(DATE, MAX(Dates)) FROM (VALUES (S.SchedClosingDate), (S.SchedClosingDate)) AS SchedDates (Dates)) BETWEEN '05/01/18' AND '05/31/18' THEN FD.FileName
END
) AS [Scheduled to Close]
FROM FileData AS FD
JOIN Status AS S ON FD.FileDataID = S.FileDataID
注意:为了提高可读性,我从查询中删除了其他指标。
发布于 2018-05-31 07:23:23
使用APPLY
将计算移动到FROM
子句
SELECT SUM(CASE WHEN v.dte >= '2018-05-01' AND v.dte < '2018-06-01' AND
FD.FileName IS NOT NULL
THEN 1 ELSE 0 END
END) AS [Scheduled to Close]
FROM FileData FD JOIN
Status S
ON FD.FileDataID = S.FileDataID CROSS APPLY
(SELECT MAX(dte)
FROM (VALUES (S.SchedClosingDate), (S.SchedClosingDate)) SchedDates(dte)
) as v(dte);
https://stackoverflow.com/questions/50614557
复制相似问题