0

我正在尝试解决以下查询。请问你能帮忙吗?

银行台 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)可能有多个AccountTypes(BT.AccountTypeCode)的账户,并且
对于每个账户类型,他可能有不同的余额(BT.Balance)。
2.在多个accounttype的账户下,他可能有多个共享账户持有人(BT.ShareAccountHolderCount)
3.我没有另一个表可以加入BANKTABLE

问题:现在我必须从所有帐户类型中为帐户选择 Max(Balance) 及其 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
4

1 回答 1

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
于 2012-07-25T14:29:17.413 回答