I表は、次のフィールドで登録を求めている:不要なSQLサブセレクトを取り除く最も良い方法は?
- イド
- DateStarted(nullでない)
- DateCompleted(NULL可能)
Iは、数を示す棒グラフを有します日付によって開始され完了した登録の数。 私のクエリは次のようになります。
はDateStarted StartCount CompleteCount
2009-08-01 1033 903
2009-08-02 540 498
クエリはちょうどそれらのコードのにおいの問題の一つでありますように見えるテーブルを返し
;
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
。これを行う良い方法は何ですか?
はそれがDateCompletedは登録が存在しているレコードがないする日付であることは可能ですか?例えば07/31のレコードが開始日として記録されていないが、その日付に登録が完了したレコードはありますか? – shahkalpesh
私が正しく理解している場合、「CompleteCount」列は、過去に開始されたデータの数ではなく、日付で開始された登録の数(「StartCount」列)もその日に終了しました。これが正しくない場合は、明確にしてください。 --thnx – RBarryYoung
(開始日と終了日は同じです) – RBarryYoung