我需要根据列'ItemNo'从下表中获取最早的日期。
ItemNo PO_number Date 110913 PO-8048 9/15/2015 110913 PO-8036 9/30/2015 110652 PO-1011 10/19/2015 110652 PO-1011 10/10/2015 110009 PO-1016 7/1/2015 110009 PO-1087 6/20/2015 110888 PO-7171 4/1/2015
您的查询结果应如下所示。
ItemNo PO_number Date 110913 PO-8048 9/15/2015 110652 PO-1011 10/10/2015 110009 PO-1087 6/20/2015 110888 PO-7171 4/1/2015
非常感谢任何帮助。
答案 0 :(得分:0)
你可以通过几种不同的方式来解决这个问题,一种合理的方法就是:
with min_rec as
(
select t.ItemNo, t.PO_number, t.Date, row_number() over(partition by t.ItemNo order by t.Date asc) as rn
from your_table t
)
select m.ItemNo, m.PO_number, m.Date
from min_rec m
where m.rn = 1;
利用CROSS APPLY将是另一种方法也可行,但在这种特殊情况下,它可能不会是一种表现更好的方法(尽管一如既往地取决于它):
select distinct c.ItemNo, c.PO_number, c.Date
from your_table t
cross apply (
select top 1 i.ItemNo, i.PO_number, i.Date
from your_table i
where i.ItemNo = t.ItemNo
order by i.Date asc) c;
当然,你可以简单地使用一个自加式子查询(我将跳过那个例子)。