AsOfDate に複数の BatchDates があるテーブルがあります。
>Cmmt || AsOfDate || BatchDate
>
>6789 || 2016-02-11 00:00:00 || 2016-02-11 09:32:05
>
>6789 || 2016-02-11 00:00:00 || 2016-02-11 11:48:22
>
>2598 || 2016-02-12 00:00:00 || 2016-02-12 10:32:05
>
>6789 || 2016-02-12 00:00:00 || 2016-02-12 10:32:05
>
>6789 || 2016-02-12 00:00:00 || 2016-02-12 12:48:22
最大バッチ日付のすべてのレコードを返したい-
結果は次のようになります。
>Cmmt || AsOfDate || BatchDate
>
>2598 || 2016-02-12 00:00:00 || 2016-02-12 12:48:22
>
>6789 || 2016-02-12 00:00:00 || 2016-02-12 12:48:22
私はこれを試しましたが、すべてのレコードと日付を返し続けます:
>SELECT w.AsOfDate
> ,w.BatchDate
> ,w.Balance
>
> FROM bi.RWAFinanceReport w
>
>>INNER JOIN (
>>>SELECT AsOfDate, MAX(BatchDate) AS MaxBatchDate
>
>>>FROM bi.RWAFinanceReport GROUP BY AsOfDate) x
>
>>>on w.AsofDate=x.AsOfDate AND w.BatchDate=x.MaxBatchDate
>
>WHERE w.Balance<>0
これを解決する方法についてのヒントはありますか?
/************/
今日、この獣を解決しました。
ここには 2 つの subselect クエリがあり、1 つは maxbatchdate を見つけるためのものです。次に必要なのは、最大日付を見つけることです。これらの質問を定式化するのは難しい...
> INNER JOIN (
> SELECT ProductID, AsOfDate, MAX(BatchDate) AS MaxBatchDate
> FROM bi.RWAFinanceReport GROUP BY ProductID, AsOfDate) x
> on w.ProductID=x.ProductID AND w.AsOfDate=x.AsOfDate _
> AND w.BatchDate=x.MaxBatchDate
>
> INNER JOIN (
> SELECT MAX(AsOfDate) AS MaxAsOfDate
> FROM bi.RWAFinanceReport) y
> on w.AsOfDate = y.MaxAsOfDate