我想检索每条记录的先前客户合约生效日期。如何编写查询以便它会给我以下结果?这是为sql server。我使用过partition by
吗?谢谢!
Customer Eff_Date Previous_Eff
A 1/1/2013 NULL
A 2/1/2014 1/1/2013
A 3/1/2015 2/1/2014
B 2/1/2014 NULL
B 3/1/2014 2/1/2014
答案 0 :(得分:3)
{ token: '123456789',
barcode: [ '0123456789', '987654321', '45243453', '987654321' ] }
total = 4
0
0123456789
Debug 1
Debug 5
1
987654321
Debug 1
Debug 5
2
45243453
Debug 1
Debug 5
3
987654321
Debug 1
Debug 5
Debug 6
Debug 7
Debug 2
Debug 3
Debug 4
[ { unitprice: 10 } ]
Debug 2
Debug 3
Debug 4
[]
Debug 2
Debug 3
Debug 4
[ { unitprice: 30 } ]
Debug 2
Debug 3
Debug 4
[ { unitprice: 30 } ]
您可以使用select customer, eff_date,
lag(eff_date) over(partition by customer order by eff_date) as previous_eff
from tablename;
函数获取上一行的effdate的值。
如果您使用的是早于2012年的SQL Server版本,则这是使用lag
函数执行此操作的另一种方法。
row_number
答案 1 :(得分:0)
这是使用可在大多数dbs上运行的子查询选择上一个日期的方法
select *,
(select max(Eff_Date) from mytable b
where b.Customer = a.Customer
and b.Eff_Date < a.Eff_Date) Previous_Eff
from mytable a