SQL根据另一个表的值从一个表中选择内容作为过滤器



我有两个表如下:

USERTABLE
USERID   DATE
1        2022-01-01
2        2022-03-01
STOCKTABLE
USERID    DATE        VALUE    APPROVED
1        2020-12-31    100      Y
1        2022-02-01    50       Y
1        2022-03-01    100      N
2        2022-01-01    10       N
2        2022-03-02    20       N
2        2022-03-05    25       Y

我想选择USERTABLEDATE之后每个用户的行数,以及APPROVED事务中VALUES的总和所以我的结果表看起来应该像

USERID    COUNT    SUM
1          2       50
2          2        25

请注意,我只是为每个用户取一行,其中STOCKTABLE中的DATE为每个用户大于USERTABLE中的DATE,APPROVED状态为Y

我尝试了一个内连接谢谢!

我们可以在这里使用条件聚合:

SELECT u.USERID,
COUNT(*) AS COUNT,
SUM(CASE WHEN s.APPROVED = 'Y' THEN s.VALUE ELSE 0 END) AS SUM
FROM USERTABLE u
INNER JOIN STOCKTABLE s
ON s.USERID = u.USERID AND
s.DATE > u.DATE
GROUP BY u.USERID
ORDER BY u.USERID;

最新更新