我如何使用GROUP BY& Oracle中的MAX()?

时间:2014-09-23 12:57:02

标签: sql oracle

我要求根据LVL,QT_ID和PRODUCT等最终结果准备报告。

我必须遵循以下条件

  1. 需要按QT_ID和PRODUCT进行分组。
  2. 每个QT_ID的MAX(LVL)是每个QT_ID和PRODUCT组的LVL。
  3. 输入值低于

     -----------------------------
      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
     ----------------------------- 
    

    任何人都可以帮助我使用上述数据获得预期的输出?

    注意:我不使用子查询或连接查询。

1 个答案:

答案 0 :(得分: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