计算一个 table 中不同行的数量和另一个 table 中一列的最大值的单个查询

A single query to count the number of distinct rows in one table and the highest value of a column from another table

我有两个 SQL table。 Table1如下:

     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 

Table2("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

table 1 中不同 SALESREF 的总数和来自 table 2 的最新 SALESDATE 值。

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

SELECT MAX(LEDGER.SALEDATE) AS LAST_DATE FROM LEDGER 

我只需要帮助将整个事情拼凑起来。

您可以使用 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