2013-09-25 40 views
2

我试图从销售订单表中第一个实例的项目中检索所有字段。我需要返回第一个实例中的所有字段 - SQL

 
    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不适合,因为我需要返回所有领域(还有更多没有显示),我不想要总订货数量。

我将不胜感激的帮助。

回答

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" 
+0

嗨,感谢您的及时答复。我会试试这个。但是,我实际上是在最老的订单之后,并且只关心订单数量(需要最大的订单),如果最旧的订单当天有多个订单。我希望澄清。 – gobs

+0

我更新了我的答案。 –

+0

再次嗨。我已经尝试过了,但它给了我所有最古老的日子的订单。但是,它确实在以后的日子里剥离了所有订单。我想我将不得不再次执行上述操作,这次使用max(orderqty)。 – gobs

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

这是一个使用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

+0

我应该在我的示例表上显示其他字段,如订单类型和订单数量。有没有办法将这些字段合并到您的查询中而不会收到NOT A GROUP BY EXPRESSION错误? – gobs

+0

@gobs,然后你可以使用DB_learner的答案。 – Noel

+0

谢谢。我相信他的西装是我的需要...... – gobs

相关问题