sql - 如何左连接并按条件最大值选择,然后选择另一个字段?
问题描述
数据库: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
解决方案
您可以使用以下方法来实现此目的:
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;
让我知道这是否适合您。
推荐阅读
- node.js - 在 localhost:4200 中键入命令 ng serve -o 时不运行 Angular 项目
- c++ - 丰富的数字
- ios - 如何使用 Cocoa Pods 仅导入部分材质组件
- lodash - 使用 Lodash 对另一个对象中的特定值进行分组
- angular - 使用 [ngClass] 时的警告
- spring - Spring Integration @Autowired 不起作用
- javascript - 在 Vue Client 3 中使用 webpack 插件
- php - 为服务编写单元测试
- django - django-axes modelbackend 需要“请求”进行身份验证
- azure - 动态创建 ARM 属性名称