Sql server SQL SERVER查询以从所有帐户类型中提取帐户号的最大值(余额)及其ShareAccountHolderCount
我正在尝试解决以下查询。请你帮忙好吗 银行表BTSql server SQL SERVER查询以从所有帐户类型中提取帐户号的最大值(余额)及其ShareAccountHolderCount,sql-server,Sql Server,我正在尝试解决以下查询。请你帮忙好吗 银行表BT AccountNumber AccountTypeCode Balance ShareAccountHolderCount 10800 2146 160 5 10800 2148 126 3 10800 2149
AccountNumber AccountTypeCode Balance ShareAccountHolderCount
10800 2146 160 5
10800 2148 126 3
10800 2149 84 6
10800 2147 66 7
11039 2581 42 1
11039 2582 32 21
11039 2579 10 91
11039 2578 7 10
要求:
1.一个帐号(BT.AccountNumber)可能有多个帐户类型(BT.AccountTypeCode)和对于每种账户类型,他可能有不同的余额(BT.Balance)。
2.在多账户类型的账户下,他可能有多个共享账户持有人(BT.ShareAccountHolderCount)
3.我没有其他的表可以加入银行表 问题:现在我必须从所有账户类型中提取账户号码的最大(余额)及其股东账户 结果应如下所示
AccountNumber AccountTypeCode Balance ShareAccountHolderCount
10800 2146 160 5
11039 2581 42 1
根据我的研究答案1:TOP 1和Order by Balance DESC不适用于此要求。
答案2:我试图通过在下面写下查询来做点什么,但无法得到答案
SELECT AccountNumber,AccountTypeCode,Balance,ShareAccountHolderCount
,RowNumber = ROW_NUMBER() OVER (PARTITION BY AccountNumber ORDER BY LongestStressdays DESC)
,RowNumber2 = ROW_NUMBER() OVER (PARTITION BY AccountNumber ORDER BY CountOfTestTypeIdsperSequence DESC)
FROM BANKTABLE BT
你已经接近解决方案了。第二部分包括筛选行,以便按分区仅获取第一行:
with cte as (
SELECT
AccountNumber,
AccountTypeCode,
Balance,
ShareAccountHolderCount,
RowNumber = ROW_NUMBER() OVER (
PARTITION BY AccountNumber
ORDER BY Balance DESC)
FROM BANKTABLEL BT
)
select
AccountNumber,
AccountTypeCode,
Balance,
ShareAccountHolderCount
from
cte
where RowNumber = 1
,这样我就可以和StackOverflow联系了,是的,你说得对。我知道结果了,非常感谢