2016-05-06 5 views
-1

私は各従業員の生産の合計数を検索するクエリを持っています。クエリを実行すると、outCountの結果が間違っています。私が間違っていることは本当にわかりません。どんな提案も素晴らしいだろう。SQLサブクエリのカウントが間違っています

SELECT 
    r1.RegionID, 
    r1.rDate, 
    r1.tCount, 
    r1.sCount, 
    r1.outCount, 
    r1.cm, 
    r1.sCalc + r1.oCalc + r1.tCalc + r1.cmCalc AS dayScore, 
    r1.createPID 
FROM (SELECT 
    q1.RegionID, 
    ROUND(q1.tCount * 0.363636364, 9) AS tCalc, 
    ROUND(q1.sCount * 0.181818182, 9) AS sCalc, 
    ROUND(q1.outCount * 0.090909091, 9) AS oCalc, 
    ROUND(q1.cm * 0.363636364, 9) AS cmCalc, 
    q1.rDate, 
    q1.tCount, 
    q1.sCount, 
    q1.outCount, 
    q1.cm, 
    q1.createPID 
FROM (SELECT 
    q1.RegionID, 
    q1.rDate, 
    q1.tCount, 
    q1.sCount, 
    q1.outCount, 
    q1.cm, 
    q1.createPID 
FROM (SELECT 
    SecurityPrincipal.RegionID, 
    CONVERT(NVARCHAR, Ticket.dtCreate, 107) AS rDate, 
    COUNT(Ticket.ticketID) AS tCount, 
    COUNT(SRO.SROID) AS sCount, 
    COUNT(o.NoteID) AS outCount, 
    COUNT(cm.NoteID) AS cm, 
    Ticket.createPID 
FROM CDOC.rpt.Ticket 
LEFT OUTER JOIN CDOC.rpt.SRO 
    ON SRO.ticketID = Ticket.ticketID 
LEFT OUTER JOIN (SELECT 
    Notes.NoteID, 
    Notes.ticketID, 
    Notes.noteCategoryID 
FROM CDOC.rpt.Notes 
WHERE Notes.noteCategoryID = '24') o 
    ON o.ticketID = Ticket.ticketID 
LEFT OUTER JOIN (SELECT 
    Notes.NoteID, 
    Notes.ticketID 
FROM CDOC.rpt.Notes 
WHERE Notes.noteSubCategoryID = '13' 
OR Notes.noteSubCategoryID = '16' 
OR Notes.noteCategoryID = '22') cm 
    ON cm.ticketID = Ticket.ticketID 
INNER JOIN CDOC.rpt.SecurityPrincipal 
    ON SecurityPrincipal.pid = Ticket.createPID 
GROUP BY CONVERT(NVARCHAR, Ticket.dtCreate, 107), 
     SecurityPrincipal.RegionID, 
     Ticket.createPID) q1) q1) r1 
+0

が参考になります。 – ydoow

答えて

1

このロジック:

COUNT(Ticket.ticketID) AS tCount, 
    COUNT(SRO.SROID) AS sCount, 
    COUNT(o.NoteID) AS outCount, 
    COUNT(cm.NoteID) AS cm, 

は非常に疑わしいです。 idsがnullでない場合、それらはすべて同じ値を返します。覚えておいてください:count()は、NULLでない値の数を数えます。

私はあなただけCOUNT(DISTINCT)をしたいと思う:あなたは、テーブルスキーマ、サンプルデータ、予想される結果と誤った結果を提供できるかどう

COUNT(DISTINCT Ticket.ticketID) AS tCount, 
    COUNT(DISTINCT SRO.SROID) AS sCount, 
    COUNT(DISTINCT o.NoteID) AS outCount, 
    COUNT(DISTINCT cm.NoteID) AS cm, 
関連する問題