我有两个表如下:
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
我想选择USERTABLE
中DATE
之后每个用户的行数,以及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;