【发布时间】:2013-01-25 03:47:11
【问题描述】:
当我尝试运行代码时出现以下错误:“无法对包含聚合或子查询的表达式执行聚合函数。”
SELECT dbo.COL_TBL_WAGES.MANUAL, dbo.COL_TBL_VCOURSE.TNG_MDA_TYP_CD,
dbo.COL_2010_TRN_RESULTS2.TNG_SYS_NR,
COUNT(dbo.COL_2010_TRN_RESULTS2.EMP_TNG_STT_DT) AS CountOfEMP_TNG_STT_DT,
dbo.COL_MASTER_COURSE_LIST.Length,
COUNT(
COUNT(dbo.COL_2010_TRN_RESULTS2.EMP_TNG_STT_DT) * (
CASE WHEN IsNumeric([COL_TBL_VCOURSE].[LENGTH]) = 1
THEN [COL_TBL_VCOURSE].[LENGTH]
ELSE 0
END
)
) AS Total_Hours
FROM dbo.COL_TBL_WAGES INNER JOIN
dbo.COL_2010_TRN_RESULTS2 ON dbo.COL_TBL_WAGES.[Job Group Code] =
dbo.COL_2010_TRN_RESULTS2.JOB_GRP_CD INNER JOIN
dbo.COL_MASTER_COURSE_LIST ON dbo.COL_2010_TRN_RESULTS2.TNG_SYS_NR =
dbo.COL_MASTER_COURSE_LIST.[GEMS Code] INNER JOIN
dbo.COL_TBL_VCOURSE ON dbo.COL_2010_TRN_RESULTS2.TNG_SYS_NR =
dbo.COL_TBL_VCOURSE.TNG_SYS_NR
GROUP BY dbo.COL_MASTER_COURSE_LIST.Length, dbo.COL_TBL_WAGES.MANUAL,
dbo.COL_TBL_VCOURSE.TNG_MDA_TYP_CD,
dbo.COL_2010_TRN_RESULTS2.TNG_SYS_NR
【问题讨论】:
-
您正在对计数 *(1 或 0)进行计数。这就是它不喜欢的。您需要将它们作为独立的步骤进行。创建一个首先获取 count * 1 或 0 的子查询,然后对其执行 COUNT。虽然你为什么会算我不太明白,因为计数 0 或计数 1 是相同的。无论如何,这是核心问题。如果您在问题中解释了目标/预期结果,也许我们可以为您提供适合您需求的查询。
-
COUNT(COUNT(TR.EMP_TNG_STT_DT) * (CASE WHEN IsNumeric([COL_TBL_VCOURSE].[LENGTH]) = 1 THEN [COL_TBL_VCOURSE].[LENGTH] ELSE 0 END))你能解释一下这是什么意思吗?
标签: sql-server