如何通过condition max left join and select,然后选择另一个字段?
How to left join and select by condition max, then choose another field?
数据库:SAP HANA
如何通过条件max左连接和select,然后选择另一个字段?
一个
user
no
qty
A
10
20
A
11
30
B
12
40
B
13
10
B
id
user
1
A
2
B
预期结果
id
user
no
1
A
11
2
B
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;
让我知道这是否适合你.
数据库:SAP HANA
如何通过条件max左连接和select,然后选择另一个字段?
一个
user | no | qty |
---|---|---|
A | 10 | 20 |
A | 11 | 30 |
B | 12 | 40 |
B | 13 | 10 |
B
id | user |
---|---|
1 | A |
2 | B |
预期结果
id | user | no |
---|---|---|
1 | A | 11 |
2 | B | 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;
让我知道这是否适合你.