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