我试图做的非常简单的查询。SQL选择带有最大日期和最大最大日期的收费代码语句
我试图选择具有两个日期的收费代码:
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年2月1日2013年2月1日
38073 2013年2月1日2013年2月1日
根据你的语法似乎你使用SQL Server。如果这个权利? – 2013-04-09 18:11:46
假设SQL服务器,你需要'外部应用'而不是'LEFT JOIN' ... – a1ex07 2013-04-09 18:13:05
@PM 77-1是SQL Server – 2013-04-09 18:16:54