0
我正在与具有一段代码如下存储过程工作:通过记录和更新列MS SQL环与聚合值
UPDATE s
SET EstimatedEffort = IsNull(s.EstimatedEffort, 0) + IsNull(sq.EstimatedEffort, 0),
EstimatedValue = IsNull(s.EstimatedValue, 0) + IsNull(sq.EstimatedValue, 0)
FROM #Story s
JOIN (SELECT ji.ProjectID,
ji.ParentIssueID,
sum(ji.OriginalEstimate)
* IsNull(pc.OverrideRate, c.DefaultRate) as EstimatedValue,
sum(ji.OriginalEstimate) as EstimatedEffort
FROM JiraIssues ji
LEFT JOIN ProjectComponents pc
ON ji.ProjectID = pc.ProjectID
and ji.ComponentID = pc.ComponentID
LEFT JOIN Components c
ON ji.ComponentID = c.ComponentID
WHERE ji.ProjectID = 12
and ji.JiraIssueTypeID = 2
GROUP BY ji.ProjectID,
ji.ParentIssueID,
pc.OverrideRate,
c.DefaultRate) sq
ON s.ProjectID = sq.ProjectID 和s.IssueID = sq.ParentIssueID
在这里,我有一个临时表#Story我试图加入从子查询的结果。
完成此操作后,我想要更新临时表上的两列(EstimatedEffort和EstimatedValue)的值,以便同一个ProjectID的所有值应加起来。我可以填充两个列,但是如果子查询结果中的同一个ProjectID列有多行,则只有第一个被添加到#Story表中。
有没有一种方法可以将子查询结果中特定ProjectID的所有值加起来,并将它们存储在#Story表中?
但是我必须将它保留在Group By子句中,否则会出现错误“列”ProjectComponents.OverrideRate“在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 – shivam
试试这个 sum(ji.OriginalEstimate * IsNull(pc.OverrideRate,c.DefaultRate))作为EstimatedValue, – siwym
是的,工作!谢谢! – shivam