【发布时间】:2015-02-12 04:15:13
【问题描述】:
我正在尝试编写 CTE 查询,而我在 CTE 查询的“新”标题之前。但我觉得我已经接近完成我所追求的最终游戏了。我的查询在我输入 CTE 之前运行完美,即使在包含 CTE 之后,它仍然可以完美运行,只是给出了每个单独的实例,而不是我需要的 SUM。我应该在我的语法中进行哪些更改,以便查询只根据需要生成 SUM?
;With CTE
As
(
SELECT
BadgeNum
,NameOnFile
,SUM((CONVERT(decimal(18,6),pyrll.hoursworked))) AS [Hours]
FROM
masterpayroll pyrll
Group By
BadgeNum,NameOnFile
)
SELECT
,SUM(pyrll.[Hours]) As [Hours Worked This Week]
,pyrll.NameOnFile As [Employee Name]
,COUNT(case when pf.arrest_status in ('Final', 'Complete',) And pf.supervisorSignoff IS NOT NULL THEN pf.ID else null end)
,COUNT(case when pf.arrest_status in ('Pending', 'Incomplete', 'On Hold') THEN pf.ID else null end)
FROM personelFiles pf
INNER JOIN CTE pyrll
ON pf.ID = pyrll.BadgeNum
WHERE pf.officerName Like 'Gat%'
GROUP BY pyrll.[Employee Name], pyrll.[Hours Worked This Week]
EDIT ---顶部数据集是从查询返回的 - 底部数据集是我希望看到的返回。
编辑#2 - 如果他们是编写查询的更好方法,仍然可以在我的下图中产生第二个数据集的预期结果,我也愿意!
【问题讨论】:
-
您到底需要什么?您能否更具体或提供示例输出?
-
@EduardUta - 包括图片。顶部结果是查询包含的内容,底部结果集是我希望它显示的内容。
标签: sql-server-2008 tsql common-table-expression