0

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
4

1 に答える 1