2012-10-15 140 views
0

我在DB2中有以下查询,但不起作用,问题是最大函数,但我不知道如何解决它。DB2 sql Max记录函数

SELECT CAR.VI max(CAR.ID), 
TU.SOLD 
FROM P.CAR CAR, A.TU TU WHERE CAR.VI = TU.VI 

'Table1'                ' VI:  USER: DATE:  DATE2:  STATUS: ID' 
' 2T1BU4 DEALER 2012-10-15 2012-10-15 CER  1 ' 
' 2T1BU4 DEALER 2012-10-15 2012-10-15 CER  2 ' 
' 2T1BU3 DEALER 2012-10-15 2012-10-15 DRA  1 ' 


' VI:  SOLD:' 
' 2T1BU4 Y' 
' 2T1BU3 N'   

我想从我收到的查询将是这样的:

' VI:  USER: DATE:  DATE2:  STATUS: ID SOLD' 
' 2T1BU4 DEALER 2012-10-15 2012-10-15 CER  2 Y ' 
' 2T1BU3 DEALER 2012-10-15 2012-10-15 DRA  1 N '  

我想要得到的是具有最大ID

+0

什么不工作?你有什么错误吗? – Taryn

回答

2

您没有提供很多的VI但我会猜测你想要这个:

SELECT CAR.VI, max(CAR.ID), TU.SOLD 
FROM P.CAR CAR 
INNER JOIN A.TU TU 
    ON CAR.VI = TU.VI 
GROUP BY CAR.VI, TU.SOLD 

或者你可以使用子查询:

select c1.vi, c1.id, tu.sold 
from 
(
    select max(id) id, vi 
    from P.CAR 
    group by vi 
) c1 
inner join A.TU TU 
    on c1.VI = TU.VI 
+0

对不起,让我解释更多的表格可能在VI领域有相同的价值很多时间,但ID是不同的,它会增加,我想要得到的记录最大ID为 – user1725253

+0

@ user1725253你可以发布一些样本数据和预期结果? – Taryn

+0

'Table1''VI:USER:DATE:DATE2:STATUS:ID' '2T1BU4 DEALER 2012-10-15 2012-10-15 CER 1' '2T1BU4 DEALER 2012-10-15 2012-10-15 CER 2 ' ' 2T1BU3经销商2012年10月15日2012年10月15日DRA 1 ' ' 六:销售:” '2T1BU4 Y' '2T1BU3 N' – user1725253

0

使用公共表表达式的变化:

with cte (vi, id) as 
(SELECT vi, max(ID) 
FROM P.CAR 
group by vi) 
select cte.vi, cte.id, tu.sold 
from cte INNER JOIN A.TU TU 
ON cte.VI = TU.VI 
0

我不是100%肯定,你想要什么,但它听起来像你想拥有的MAX(ID)记录为每个VI。你需要这样做:

SELECT C1.VI, C1.ID, TU.SOLD FROM P.CAR CAR C1, A.TU TU WHERE C1.VI = TU.VI 
WHERE C1.ID = (SELECT MAX(C2.VI) FROM P.CAR C2 WHERE C1.VI = C2.VI)