私の上司はこのコードを私のやり方で投げました。内部結合の最後の ON ステートメントがどのように機能するかを理解するのに苦労しています。彼もそれを完全には理解していないと思います(しかし、それは仕事を成し遂げます)。SQL がどのように機能するかについてもっと知りたいと思っています。どうもありがとう!
オンステートメントはこちら
and (A.Submitted_Date > X.Submitted_Date)))
そして、ここにクエリがあります
SELECT AA.ID, AA.Submitted_Date as Date_Status
FROM Report as AA
where AA.Submitted_Date in
--START
(
SELECT X.Submitted_Date
FROM Report as A
inner join
--Start Find All Dates Submitted
(
SELECT [ID],[Submitted_Date]
FROM Report
where not(Submitted_Date is null and Cleared_Date is null)
group by ID, Submitted_Date) as X
--End Find all Dates Submittd
--below is the conditions of the join
ON A.ID = X.ID
and A.ID= AA.ID
--THIS IS THE CONDITION I AM CONFUSED ABOUT!!!!
and (A.Submitted_Date > X.Submitted_Date)))
group by X.Submitted_Date)
and not AA.Submitted_Date is null
group by AA.ID, AA.Submitted_Date
以下は、表 A の日付のサンプルです。
2012-11-27 00:00:00.000
2012-11-27 00:00:00.000
2012-11-27 00:00:00.000
2012-12-10 00:00:00.000
2012-11-27 00:00:00.000
2012-11-27 00:00:00.000
2012-11-29 00:00:00.000
2012-12-05 00:00:00.000
2012-12-12 00:00:00.000
以下は、表 X の日付のサンプルです。
2012-11-27 00:00:00.000
2012-11-29 00:00:00.000
2012-12-05 00:00:00.000
2012-12-10 00:00:00.000
2012-12-12 00:00:00.000
最後の条件の前の結果は次のとおりです
2012-11-27 00:00:00.000
2012-11-29 00:00:00.000
2012-12-05 00:00:00.000
2012-12-10 00:00:00.000
2012-12-12 00:00:00.000
A.Sub > X.Sub での結果は次のとおりです。
2012-11-27 00:00:00.000
2012-11-29 00:00:00.000
2012-12-05 00:00:00.000
2012-12-10 00:00:00.000
これらの日付が表示される理由がわかりません。AとXの間で何が比較されていますか? A の値は常に X と同じではないので、最終的なデータはありませんか? ご協力ありがとうございました!