我正在尝试做的非常简单的查询。
我正在尝试选择具有两个日期的收费代码:
1) 最近/MAX 生效日期和 2) 表格中最近/MAX 日期之前的日期。
收费代码在表格中多次列出,并有各种对应的生效日期。有的收费代码列出一次,只有一个生效日期,而另一些收费代码列出了 8 次,有 8 个生效日期。
这是我正在尝试做的事情:
select
BP.[mnemonic] [Charge Code]
,MAX (BP.[std_effective_date]) [Max date]
,BP2.[Date Prior to Max]
from
[TABLE1] BP
left outer join
(select distinct [mnemonic], MAX ([std_effective_date]) [Max Date]
from
[TABLE1]
where [std_effective_date] < BP.[std_effective_date] group by [mnemonic]) BP2
ON BP.[mnemonic] = BP2.[mnemonic]
where
BP.[mnemonic] IN ('38066','38073','38080')
group by BP.[mnemonic]
我知道我无法在联接的子查询中引用外部查询中的表(即使它是同一张表),但我将如何做类似的事情?或者你会如何建议获得第二个最大日期?
不幸的是,表中没有行号。
请帮忙。谢谢。
样本结果
费用代码 最大日期 最大日期之前的日期
38066 2013-02-01 2013-02-01
38073 2013-02-01 2013-02-01