sql >> データベース >  >> RDS >> Sqlserver

TSQL で実行中の合計の最大値を取得する効率的な方法

    SQL Server 実行中の合計を計算するのが苦手です。

    これはまさにあなたのクエリに対する解決策です (これは日付でグループ化されます):

    WITH    q AS
            (
            SELECT  TranxDate, SUM(TranxAmt) AS TranxSum
            FROM    t_transaction
            GROUP BY
                    TranxDate
            ),
            m (TranxDate, TranxSum) AS
            (
            SELECT  MIN(TranxDate), SUM(TranxAmt)
            FROM    (
                    SELECT  TOP 1 WITH TIES *
                    FROM    t_transaction
                    ORDER BY
                            TranxDate
                    ) q
            UNION ALL
            SELECT  DATEADD(day, 1, m.TranxDate),
                    m.TranxSum + q.TranxSum
            FROM    m
            CROSS APPLY
                    (
                    SELECT  TranxSum
                    FROM    q
                    WHERE   q.TranxDate = DATEADD(day, 1, m.TranxDate) 
                    ) q
            WHERE   m.TranxDate <= GETDATE()
            )
    SELECT  TOP 1 *
    FROM    m
    ORDER BY
            TranxSum DESC
    OPTION (MAXRECURSION 0)
    

    必要 TranxDate にインデックスを付ける




    1. PostgreSQLが範囲タイプのNULL境界を無限境界とは異なると見なすのはなぜですか?

    2. PHP Mcryptで暗号化し、MySQL aes_decryptで復号化しますか?

    3. 列名を取得するためのMySQLクエリ?

    4. pandasDataFrameをMicrosoftSQLServerテーブルにアップサートする方法は?