目前我在sql数据库中有这个表,按帐号#。
排序Account# Charge_code PostingDate Balance
12345 35 1/18/2016 100
**12345 35 1/20/2016 200**
12345 61 1/23/2016 250
12345 61 1/22/2016 300
12222 41 1/20/2016 200
**12222 41 1/21/2016 250**
12222 42 1/23/2016 100
12222 42 1/25/2016 600
如何为每个帐号#的charge_code列中的更改前选择最后一行。我突出显示了我想要返回的行。
查询应该快速执行,表中有数万条记录。
答案 0 :(得分:1)
在SQL Server 2012+中,您将使用lead()
:
select t.*
from (select t.*,
lead(charge_code) over (partition by account order by postingdate) as next_charge_code
from t
) t
where charge_code <> next_charge_code;
在早期版本的SQL Server中,您可以使用apply
执行类似操作。