SQL - 修改记录以获取一列中季度的总余额,即使是 SQL 中的特定季度
Posted
技术标签:
【中文标题】SQL - 修改记录以获取一列中季度的总余额,即使是 SQL 中的特定季度【英文标题】:SQL - Modify records to get total overall balance of quarters in one column even for specific quarter in SQL 【发布时间】:2020-09-16 17:46:05 【问题描述】:我正在处理一个查询,我必须有所有季度的总余额。 例如
ID NAME Quarter BALANCE
1 RB 202010 500
1 RB 202020 200
2 AD 202020 100
3 KT 202020 800
3 KT 201910 699
我使用 sum(balance) over(partition by ID) TOTAL_BALANCE -
ID NAME Quarter BALANCE TOTAL_BALANCE
1 RB 202010 500 700
1 RB 202020 200 700
2 AD 202020 100 100
3 KT 202020 800 1499
3 KT 201910 699 1499
现在我需要一个结果,如果我在 Quarter 上使用过滤器,例如 Quarter = '202020' 它应该给出 -
ID NAME Quarter BALANCE TOTAL_BALANCE
1 RB 202020 200 700
2 AD 202020 100 100
3 KT 202020 800 1499
但是由于分区函数需要使用 Group by 'Balance' 我得到 -
ID NAME Quarter BALANCE TOTAL_BALANCE
1 RB 202020 200 200
2 AD 202020 100 100
3 KT 202020 800 800
【问题讨论】:
给定信息。你认为人们可以如何帮助你???请阅读本文以了解如何提问。 ***.com/help/how-to-ask 【参考方案1】:您可以在子查询中使用窗口函数,然后在外部查询中进行过滤:
select *
from (select t.*, sum(balance) over(partition by id) total_balance from mytable t) t
where quater = '2020'
【讨论】:
【参考方案2】:你可以试试下面的-
select ID,NAME,Quarter,BALANCE,
(select sum(balance) over(partition by ID) from tablename t1 where t.id=t1.id) as total_balance
from tablename t where quarter = '202020'
【讨论】:
有错误说-单行子查询返回多行以上是关于SQL - 修改记录以获取一列中季度的总余额,即使是 SQL 中的特定季度的主要内容,如果未能解决你的问题,请参考以下文章