寫一個報告有問題。 我試圖指望發佈和通過的查詢數量,他們都有一個日期時間字段根據2個日期範圍計算2個不同列
即時通訊的問題是結果回來不正確。
運行這段代碼給了我126通過
SELECT COUNT(*) AS Passed FROM BPS.dbo.tbl_Profile AS p
Inner Join BPS.dbo.tbl_Profile_Mortgage AS pm
ON p.Id = pm.FK_ProfileId
WHERE p.CaseTypeId IN (1,2,9,15) AND CONVERT(DATE,pm.DatePassed,103) BETWEEN @Start AND @End
當我運行所發出的查詢,我得到223個
SELECT COUNT(*) AS Issued FROM BPS.dbo.tbl_Profile AS p
Inner Join BPS.dbo.tbl_Profile_Mortgage AS pm
ON p.Id = pm.FK_ProfileId
WHERE p.CaseTypeId IN (1,2,9,15) AND CONVERT(DATE,pm.DateAppIssued,103) BETWEEN @Start AND @End
這些數字是正確的,所以我把它放在一個查詢像這樣。
SELECT COUNT(pm.DateAppIssued) AS Issued,COUNT(pm.DatePassed) AS Passed FROM BPS.dbo.tbl_Profile AS p
Inner Join BPS.dbo.tbl_Profile_Mortgage AS pm
ON p.Id = pm.FK_ProfileId
WHERE p.CaseTypeId IN (1,2,9,15)
AND (CONVERT(DATE,pm.DateAppIssued,103) BETWEEN @Start AND @End
OR CONVERT(DATE,pm.DatePassed,103) BETWEEN @Start AND @End)
這給我頒發265,並通過185 我已經嘗試了許多不同的變化,但不能仍然得到正確的數字 我希望我已經解釋過這個不夠好,任何幫助,將不勝感激。 Rusty
感謝VKP非常感謝,所以基本上你說如果有一個日期在發佈或通過匹配的日期範圍,然後算作1.這是一個完美的解決方案,我認爲我可以在where子句中實現這一點。我將保存此代碼以供將來使用,因爲我擁有這樣的報告。 – RustyHamster