1

私はSQLの初心者であり、アクセス強度とフォルダー名に従ってすべての最大値を取得しようとしており、それに応じてフォルダーへのグループを許可しています。MAX 関数を使用してみましたが、最大結果が 1 つしか返されませんでした。指定された結果を達成する方法についてのヘルプまたはガイダンスを事前に感謝します。

上部の表に添付されている jpg リンクと、下部の表の望ましい結果を参照してください。

ジョン

上の表と下の表の望ましい結果

4

3 に答える 3

1

RANK関数を使用してレコードを並べ替え、上位 1 つだけを選択できます。

WITH CTE AS
(   SELECT  Folder_name,
            [User],
            Access,
            Group_Allowing,
            [Rank] = RANK() OVER(PARTITION BY Folder_Name, [User] ORDER BY Access DESC)
    FROM    T
)
SELECT  Folder_name,
        [User],
        Access,
        Group_Allowing
FROM    CTE
WHERE   [Rank] = 1;

このPARTITION BY句は GROUP BY に似ており、ランキングはグループごとに 0 から再び開始されます。order by は単純に、ランキングを行う順序を示します。

于 2013-09-26T19:55:42.820 に答える