根据Db2 SQL中列之一的MAX值获取行

问题描述

我想根据Db2 SQL中某一列的最大值来获得一行。

urlDB="mongodb://localhost:27017/BTracker"

下面的查询未显示最新版本的银行名称。

TABLE_1

ID   ORG    DEST    AccountNumber   Amount  Status   
----------------------------------------------------
11   1224   6778    32345678        458.00  Accepted 
12   1225   6779    12345678        958.00  Rejected 
 4   1226   6780    22345678        478.00  Rejected 
 6   1227   6781    21345678        408.00  Accepted 

TABLE_2

ID     NAME         VERSION
---------------------------
1224   BankA        1
1224   BankA1       2
1225   BankB        1
1226   BankC        1
1227   BankD        1
1227   BankD1       2
6778   TestBankA    1
6778   TestBankA1   2
6778   TestBankA1   3
6779   TestBankB    1
6779   TestBankB1   2
6779   TestBankB2   3
6779   TestBankB3   4
6780   TestBankC    1
6781   TestBankD    1


Expected Output

ID  AccountNumber   Amount  Status    Origin   Destination
----------------------------------------------------------
11  32345678        458.00  Accepted  BankA1   TestBankA1
12  12345678        958.00  Rejected  BankB    TestBankB3
4   22345678        478.00  Rejected  BankC    TestBankC
6   21345678        408.00  Accepted  BankD1   TestBankD

解决方法

ROW_NUMBER分析函数在此处提供了一个选项:

WITH cte AS (
    SELECT *,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY VERSION DESC) rn
    FROM TABLE_2
)

SELECT
    t1.AccountNumber,t1.Amount,t1.Status,t2org.NAME AS Origin,t2dest.NAME AS Destination
FROM TABLE_1 t1
LEFT JOIN cte t2org
    ON t2org.ID = t1.ORG AND t2org.rn = 1
LEFT JOIN cte t2dest
    ON t2dest.ID = t1.DEST AND t2dest.rn = 1;
,

Tim选择使用CTE和ROW_NUMBER() OLAP函数是一种很好的方法。

由于您只希望从TABLE_2中获取单个列(NAME,因此您也可以从相关子查询中检索它,尽管如果TABLE_1中有很多合格行,它的性能可能也不尽人意。

SELECT t1.ID,t1.AccountNumber,(SELECT t2r.NAME FROM TABLE_2 AS t2r 
     WHERE t2r.ID = t1.ORG 
     ORDER BY t2r.VERSION DESC FETCH FIRST ROW ONLY
    ) AS Origin,(SELECT t2d.NAME FROM TABLE_2 AS t2d 
     WHERE t2d.ID = t1.DEST
     ORDER BY t2d.VERSION DESC FETCH FIRST ROW ONLY
    ) AS Destination
FROM TABLE_1 AS t1
WHERE t1.Status <> 'Failed';

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...