我需要从第一个实例返回所有字段 - SQL

时间:2013-09-25 10:59:38

标签: sql oracle greatest-n-per-group

我正在尝试从销售订单表中的第一个项目实例中检索所有字段。

    Item    Order Date  Order Qty
    Item1    17/09/2013  1
    Item1    20/09/2013  2
    Item2    16/09/2013  2
    Item2    17/09/2013  1
    Item3    20/09/2013  3
    Item3    20/09/2013  2
    Item3    20/09/2013  1

粗体的记录是我追求的。我的登台表已按订单日期排序(稍后会订购数量)。

Select DISTINCTSelect GROUP不合适,因为我需要返回所有字段(还有更多未显示的字段),我不想要总订单数量。

我非常感谢帮助。

3 个答案:

答案 0 :(得分:2)

这是一个使用FIRST函数。

select item,
      min(orderdate) keep(dense_rank first order by orderdate, orderqty desc),
      min(orderqty) keep(dense_rank first order by orderdate, orderqty desc)
from items
group by item;

示例here

答案 1 :(得分:1)

如果您想在没有任何订单的情况下首次出现,请使用以下内容。但是,如果您想根据日期和数量进行订购,请按row_number函数类的顺序添加。

 Select Item, Order_Date, Order_Qty from 
(select Item, Order_Date, Order_Qty, 
row_number() over(partition by Item order by null) rn
from table1) a where rn = 1;

答案 2 :(得分:0)

select t.*
from your_table t
inner join
(
   select x.Item, min(x."Order Date") as mod
   from 
   (
      select Item, "Order Date", max("Order Qty")
      from your_table
      group by Item, "Order Date"
   ) x
   group by x.Item       
) y on y.item = t.item and y.mod = t."Order Date"