SQL SERVER查询从所有帐户类型中获取帐号的最大(余额)及其ShareAccountHolderCount

时间:2012-07-25 14:21:36

标签: sql-server

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

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

1 个答案:

答案 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