【问题标题】:Query Is Not Summing As I Need查询没有按我的需要求和
【发布时间】: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


【解决方案1】:

你在group by中有聚合列别名,你只需要员工名

更改您的 group by 子句
    GROUP BY pyrll.[Employee Name], pyrll.[Hours Worked This Week]

    GROUP BY pyrll.NameOnFile

【讨论】:

  • 将我的 Group By 声明更改为您上面的内容仍然会产生单独的结果。
  • @UGh,是的类型。现在更新初始帖子。
  • @user2676140,group by 应该修复了,我不认为还有什么问题。我也改为 nameofile 而不是员工姓名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 2017-07-13
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多