我有一個稱爲註冊記憶具有以下字段表:擺脫不需要的sql子查詢的最佳方法?
- 標識
- DateStarted(不爲空)
- DateCompleted(可爲空的)
我有一個條形圖,其顯示了編號的註冊按日期開始和完成。 我的查詢是這樣的:
;
WITH Initial(DateStarted, StartCount)
as (
select Datestarted, COUNT(*)
FROM Registrations
GROUP BY DateStarted
)
select I.DateStarted, I.StartCount, COUNT(DISTINCT R.RegistrationId) as CompleteCount
from Initial I
inner join Registrations R
ON (I.DateStarted = R.DateCompleted)
GROUP BY I.DateStarted, I.StartCount
它返回一個表,看起來像:
DateStarted StartCount CompleteCount
2009-08-01 1033 903
2009-08-02 540 498
查詢只是有這些代碼味道的問題之一。什麼是更好的方式來做到這一點?
是否有可能DateCompleted是註冊時不存在記錄的日期?例如在沒有07/31的記錄作爲開始日期的情況下是否可以有記錄,但該日期的註冊是否完成? – shahkalpesh 2009-08-05 02:59:20
如果我理解正確,那麼「CompleteCount」列不應該是過去有多少註冊可能已開始並已完成數據,而是有多少個註冊在某個日期開始(「StartCount」列)也於當天完成。如果這不正確,請澄清。 --thnx – RBarryYoung 2009-08-05 17:28:42
(即在同一天開始和完成的人數) – RBarryYoung 2009-08-05 17:29:25