我正在尝试解决以下问题。你能帮忙吗?
BANKTABLE BT
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.我没有另一张桌子加入BANKTABLE
问题:现在我必须从所有帐户类型中获取帐号的最大值(余额)及其ShareAccountHolderCount
结果应如下所示。
AccountNumber AccountTypeCode Balance ShareAccountHolderCount
10800 2146 160 5
11039 2581 42 1
根据我的研究 答案1: TOP 1和按余额排序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
答案 0 :(得分:2)
你已经接近解决方案了。第二部分包含过滤行,仅按分区获取第一行:
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