2012-12-02 62 views
0

我想只能选择一个总结列总和(MAX())子查询

select rental.member_id, 
     rental.rental_id, 
     sum(rental_line.Qty) as TotalRentals 
    from Rental 
INNER JOIN rental_line 
    on rental.rental_id =rental_line.rental_id 
where MONTHS_BETWEEN(sysdate, datein)<(12) 
group by rental.member_id, 
     rental.rental_id, 
     SUM(TotalRentals) = MAX(SUM(TotalRentals)); 

任何想法的最大价值?

回答

1

你可以排序结果由TotalRentals(3)降序排列设置查询的,然后使用rownum虚列拿起第一排:

select member_id 
    , rental_id 
    , TotalRentals 
    from (select rental.member_id 
       , rental.rental_id 
       , sum(rental_line.Qty) as TotalRentals 
      from Rental 
      INNER JOIN rental_line 
      on rental.rental_id =rental_line.rental_id 
      where MONTHS_BETWEEN(sysdate, datein)<(12) 
      group by rental.member_id, 
        rental.rental_id 
      order by 3 desc 
    ) 
where rownum = 1 
+0

哇,一个可行的治疗三江源! 如果我想添加从Member表中内联的成员FName和SName列。 我只是将字段添加到选择和分组的部分? – WibblyWobbly

+0

@ user1860423试试吧。不要忘了'group by'子句:) –

+0

试过添加额外的字段,但是我收到了与无效标识符有关的错误,即使成员表包含正确的字段? 选择member_id ,member.FNAME ,member.SName ,rental_id ,从TotalRentals (选择rental.member_id ,rental.rental_id ,总和(rental_line.Qty)作为TotalRentals 从租赁 \t INNER JOIN上构件 \t rental.Member_ID = Member.Member_ID – WibblyWobbly