2014-09-23 137 views
0

我有要求根据最终结果如LVL,QT_ID和PRODUCT编写报告。如何在Oracle中使用GROUP BY&MAX()?

我不得不以下条件是

  1. 需要组由QT_ID和PRODUCT。
  2. 对于每个QT_ID和PRODUCT组,每个QT_ID的MAX(LVL)为LVL。

输入值低于

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

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

每个QT_ID的最大值(LVL)是拉特每个QT_ID和产品组 – 2014-09-23 13:20:47

回答

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我们使用的是非常用于生成动态查询的旧工具 – 2014-09-23 13:09:01

+0

您的查询在Oracle客户端中正常工作。谢谢,并给你一个投票的尝试。 – 2014-09-23 14:21:26