2

販売注文テーブルのアイテムの最初のインスタンスからすべてのフィールドを取得しようとしています。

    アイテム 注文日 注文数量 アイテム
    1 2013 年 9 月 17 日 1
    アイテム1 2013/09/20 2
    アイテム 2 2013 年 9 月 16 日 2
    項目 2 2013 年 9 月 17 日 1
    アイテム3 2013/09/20 3
    項目 3 2013 年 9 月 20 日 2
    アイテム3 2013/09/20 1

太字のレコードは私が探しているレコードです。私のステージング テーブルは既に注文日 (および後で注文数量) で並べ替えられています。

Select DISTINCTSelect GROUPすべてのフィールドを返す必要があり (表示されていないものもあります)、合計注文数量が必要ないため、適切ではありません。

助けていただければ幸いです。

4

3 に答える 3

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;

サンプルはこちら

于 2013-09-25T11:21:35.620 に答える
1

順序なしで最初の出現を取得したい場合は、以下を使用してください。ただし、日付と数量に基づいて注文する場合は、row_number 関数の order by class に追加します。

 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;
于 2013-09-25T11:12:15.027 に答える
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"
于 2013-09-25T11:01:55.033 に答える