2013-09-25 3 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 DISTINCT и Select 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

Привет, спасибо за быстрый ответ. Я попробую. Тем не менее, я на самом деле после самого старого порядка и будет заботиться только о заказе qty (нужен самый большой заказ), если в день самого старого заказа будет несколько заказов. Надеюсь, это прояснится. – 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

Я должен был показать другие поля типа Order Type и Order NUmber в моей таблице образцов. Есть ли способ включить эти поля в ваш запрос без получения ошибки NOT A GROUP BY EXPRESSION? – gobs

+0

@gobs, тогда вы можете использовать ответ DB_learner. – Noel

+0

Спасибо. Я считаю, что его костюмы мне нужны ... – gobs

Смежные вопросы