2014-09-23 4 views
0

У меня есть требование подготовить отчет на основе конечных результатов, таких как LVL, QT_ID и PRODUCT.Как использовать GROUP BY & MAX() в Oracle?

я должен следующие условия являются

  1. Потребности в группе по QT_ID и PRODUCT.
  2. MAX (LVL) каждого QT_ID - LVL для каждой группы QT_ID и PRODUCT.

Входные значения ниже

----------------------------- 
    LVL  QT_ID  PRODUCT  
----------------------------- 
    2   Q1  P1 
    3   Q1  P2 
    8   Q2  P1 
    9   Q2  P2 
----------------------------- 

Ожидаемый результат ниже

----------------------------- 
    LVL  QT_ID  PRODUCT  
----------------------------- 
    3   Q1  P1 
    3   Q1  P2 
    9   Q2  P1 
    9   Q2  P2 
----------------------------- 

Я попытался SQL Query

SELECT MAX(LVL), QT_ID, PRODUCT FROM TMP_TEMP GROUP BY QT_ID, PRODUCT 

результат мой запрос находится ниже

----------------------------- 
    LVL  QT_ID  PRODUCT  
----------------------------- 
    2   Q1  P1 
    8   Q2  P1 
    3   Q1  P2 
    9   Q2  P2 
----------------------------- 

Кто-нибудь может помочь мне получить ожидаемый результат с использованием вышеуказанных данных?

Примечание: я не использую запрос суб-запроса или соединения.

+0

макс (LVL) каждого QT_ID составляет LVL для каждой группы QT_ID и PRODUCT –

ответ

1

Вы можете попробовать это:

SELECT t2.LVL, t1.QT_ID, t1.PRODUCT 
FROM TMP_TEMP t1 
INNER JOIN 
(
SELECT QT_ID,MAX(LVL) as LVL 
FROM TMP_TEMP 
GROUP BY QT_ID 
) t2 on t1.QT_ID=t2.QT_ID 
+0

я не использую подзапрос или присоединиться к-запрос, becoz Мы используем очень старый инструмент для генерации динамического запроса –

+0

ваш запрос отлично работает в клиенте Oracle. спасибо и дайте один голос на свой счет. –

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