首页 > 解决方案 > 如何左连接并按条件最大值选择,然后选择另一个字段?

问题描述

数据库:SAP HANA

如何左加入并按条件最大值选择,然后选择另一个字段?

一个

用户 数量
一个 10 20
一个 11 30
12 40
13 10

ID 用户
1 一个
2

预期结果

ID 用户
1 一个 11
2 12

有没有类似的sql

select B.id, B.user, MAX(qty).NO
from B
left join A
on A.user = B.user

标签: sqlhana

解决方案


您可以使用以下方法来实现此目的:

SELECT
    B.id,
    B.user,
    C.max_qty_no
FROM
    B
LEFT JOIN (
    SELECT 
        A.user,
        CASE
            WHEN A.qty = (
              MAX(A.qty) OVER (PARTITION BY A.user)
            ) THEN A.no
        END as max_qty_no
    FROM
        A
) C ON C.user = B.user AND
       C.max_qty_no IS NOT NULL;

或者

SELECT
    B.id,
    B.user,
    C.max_qty_no
FROM
    B
LEFT JOIN (
    SELECT 
        A.user,
        REPLACE(
            MAX(CONCAT(A.qty,'-',A.no)),
            MAX(CONCAT(A.qty,'-')),''
                        
        ) as max_qty_no
    FROM
        A
    GROUP BY 
       A.user
) C ON C.user = B.user;

让我知道这是否适合您


推荐阅读