我有一张表,其中 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
有人对如何解决这个问题有一些提示吗?
/************/
今天解决了这个野兽。
这里有两个子选择查询,一个是查找 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