如何解决如何仅选择SQL当前术语中存在的那些记录?
如果它们在当前期限内有余额,即Term ='202110',我需要选择记录
余额表-
ID Code Term Balance
1 XYZ 201920 20
1 HPA 202110 890
2 XYZ 202110 20
2 HCB 202110 529
3 XYZ 201920 20
3 STE 202020 765
所需的输出应为-
ID Code Term Balance
1 XYZ 201920 20
1 HPA 202110 890
2 XYZ 202110 20
2 HCB 202110 529
由于ID-1和2在期限-202110中具有余额。
我该如何实现?
解决方法
您想要此查询返回的ID:
select id from balance where term = '202110'
与运算符IN
一起使用:
select * from balance
where id in (select id from balance where term = '202110')
,
您可以使用exists
:
select t.*
from t
where exists (select 1 from t t2 where t2.id = t.id and t2.term = 202110);
如果不想指定术语,则可以使用表中的最大值。使用窗口函数可能会更简单:
select t.*
from (select t.*,max(term) over () as max_term
from t
) t
where term = max_term;
,
您可以使用In或Exists子句
SELECT * FROM TABLE1 WHERE ID
IN (SELECT ID FROM TABLE1 WHERE TERM = 202110 AND BALANCE > 0);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。