单个查询,用于计算一个表中不同行的数量以及另一个表中列的最高值

时间:2015-01-15 20:56:58

标签: sql join db2 aggregate-functions

我有两个SQL表。表1如下:

     SALEREF
 1 | 40303020
 2 | 40303021
 3 | 40303021
 4 | 40303021
 5 | 41210028  
 6 | 4120302701
 7 | 41210030  
 8 | 4112700803
 9 | 4112700803
10 | 41215030  
11 | 41215026  
12 | 41215026  
13 | 41215026  
14 | 41215026  
15 | 41215026  
16 | 41215026  
17 | 41215026  
18 | 41215027  
19 | 41215027  
20 | 41215027 

表2(“LEDGER”)如下:

     SALESREF       SALEDATE  
 0 | 4081200201  |  20140804 
 1 | 40303020    |  20141015 
 2 | 40303021    |  20141017 
 3 | 40303021    |  20141017 
 4 | 40303021    |  20141017 
 5 | 41210028    |  20121214 
 6 | 4120302701  |  20130926 
 7 | 41210030    |  20130926 
 8 | 4112700803  |  20131107 
 9 | 4112700803  |  20131107 
10 | 41215030    |  20120720 

我正在寻找的是一行输出以下内容:

 TotalDistinctSalesRefsInTable1   HighestSaleDateValueInTable2 (that has a matching value in table 1)
            9                      20141017

表1中不同SALESREF的总数和表2中的最新SALESDATE值。

我已尝试在查询中进行选择但很快发现了我的知识限制,虽然我知道我可以通过以下方式获得最新的整体销售日期:

SELECT MAX(LEDGER.SALEDATE) AS LAST_DATE FROM LEDGER 

我只是需要把整个事情拼凑起来的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用left joincountmax来获得所需的结果

select count(distinct t1.salesref) as TotalDistinctSalesRefsInTable1,
       ifnull(max(l.saledate),0) as HighestSaleDateValueInTable
from table1 t1
left join ledger l
on t1.salesref = l.salesref