好的,不是最好的標題,但不能更好地解釋它。SQL避免內部連接與多個返回的乘法
我有一個像這樣的一條SQL查詢。
count(PRStatusChangesLog.EffectiveMinutes) as timeInHandoverExternal
它的工作原理,到目前爲止,但我也想加入這樣的事情 COUNT (distinct a.ActionId) as 'Number Of Actions'
,
需要這個
INNER JOIN PRAction a on a.PrId = PRHeader.prid
現在我確信這個問題一些你已經看到。之前的計數現在乘以動作的數量。
我可以看到爲什麼發生這種情況,但我不確定如何最好地做到這一點,這樣我就可以同時得到沒有乘數的操作次數和正確的計數。
簡體完整的查詢
SELECT
PRHeader.PrId,
COUNT (distinct a.ActionId) AS 'Number Of Actions',
COUNT (PRStatusChangesLog.EffectiveMinutes) AS timeInHandoverExternal
FROM
PRHeader
LEFT JOIN
PRStatusChangesLog ON PRStatusChangesLog.PrId = PRHeader.PrId
AND PRStatusChangesLog.StatusId = 4100
INNER JOIN
PRAction a ON a.PrId = PRHeader.prid
WHERE
DATEDIFF(mm, prheader.ClosedDate, getdate()) = 1
AND (PRHeader.siteId = 74)
AND prheader.PRTypeId IN (17, 19)
AND PRHeader.tmpStatusId <> 6010
GROUP BY
PRHeader.PrId
你能分享一個完整的查詢嗎?回答這個問題有點難,沒有具體的看 – Mureinik
指定您的樣本數據和預期結果,以便於全部回答 – Mansoor
確定添加了一個簡化的完整查詢,突出顯示問題 – Rode