0

クライアントによる支払いの詳細が記載されたテーブルがあります。列を以下に示します。

ID, ClientID, Amount

ここで、クライアントIDごとに最大5つの金額グループの合計を見つけたいと思います。

見つけましたが、金額の合計DENSE_RANK()を求めているのでうまくいきません。

ありがとう。

4

4 に答える 4

0
;WITH totalSum
AS
(
    SELECT  ClientID, SUM(Amount) totalAmount
    FROM    tableName
    GROUP   BY ClientID
)
SELECT ClientID, totalAmount
FROM
    (
        SELECT  ClientID, totalAmount,
                DENSE_RANK() OVER (ORDER BY totalAmount DESC) rn
        FROM    totalSum
    ) s
WHERE   rn <= 5
于 2013-01-07T06:47:06.257 に答える
0
SELECT 
    ID,
    ClientID,
    Amount
FROM
    PaymentDetails
GROUP BY
    ID
HAVING
   Amount = SUM(Amount)
于 2013-01-07T06:47:15.243 に答える
0

これはうまくいきますか?(私はあなたの問題を理解していない) トップ 5 の合計が必要な場合は、これです。クライアントごとSUM()の金額を見つけるためのクエリは異なります。TOP 5

;WITH OrderingCTE AS
(
    SELECT   ID
            ,ClientID
            ,Amount = SUM(Amount)
            ,rNum   = ROW_NUMBER() OVER (PARTITION BY ClientID ORDER BY SUM(Amount) DESC)
    FROM MyTable
    GROUP BY ID
            ,ClientID
)
SELECT *
FROM OrderingCTE
WHERE rNum <=5
于 2013-01-07T06:56:15.950 に答える
0

してみてください:

SELECT 
    ClientID, 
SUM(Amount) Amount 
FROM(
    SELECT ROW_NUMBER() OVER (PARTITION BY ClientID ORDER BY Amount DESC) DR, 
        ClientID, 
        Amount 
    FROM YourTable
)x WHERE x.DR<=5
GROUP BY ClientID
ORDER BY ClientID
于 2013-01-07T06:54:04.940 に答える