最高のタイトルではなく、それをよりよく説明できませんでした。SQLいくつかのリターンで内部結合の乗算を避ける
私はこのような行のSQLクエリを持っています。
count(PRStatusChangesLog.EffectiveMinutes) as timeInHandoverExternal
それは今のところ動作しますが、私もこの COUNT (distinct a.ActionId) as 'Number Of Actions'
ような何かを追加したい、この
INNER JOIN PRAction a on a.PrId = PRHeader.prid
私はあなたのいくつかは、すでに見てきた確信している問題を必要
。以前の数にアクションの数が乗算されました。
私はこれがなぜ起こるのか見ることができますが、これを行うにはどうすればよいか分かりませんので、乗算器なしでアクション数と正しいカウント数を得ることができます。
あなたはCOUNT(DISTINCT PRStatusChangesLog.id)
のようなDISTINCT
で一意の列をカウントすることができ
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
OKは問題を強調している簡潔な完全なクエリを追加しました – Rode