0

以下のクエリを解決しようとしています。手伝ってもらえますか?

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)には、複数のAccountTypes(BT.AccountTypeCode)
のアカウントがあり、アカウントタイプごとに異なる残高(BT.Balance)がある場合があります。
2.複数のアカウントタイプのアカウントの下で、彼は共有アカウント所有者の数(BT.ShareAccountHolderCount)を持っている可能性があります3.BANKTABLE
に参加する別のテーブルがありません

質問:ここで、すべてのアカウントタイプから、アカウント番号のMax(Balance)とそのShareAccountHolderCountを取得する必要があります。

結果は次のようになります。

AccountNumber   AccountTypeCode     Balance         ShareAccountHolderCount
10800           2146                    160                 5
11039           2581                    42                  1  

私の調査によると、
回答1: TOP1とOrderbyBalanceDESCはこの要件では機能しません。
回答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

あなたは解決に近づいています。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 に答える