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

カーソルを使用せずにSQLで現在の合計を計算するにはどうすればよいですか?

    ここでローカル変数ソリューションの更新を確認することをお勧めします:http://geekswithblogs.net/Rhames/archive/2008/10/28/calculating-running-totals-in-sql-server-2005 --- the-optimal.aspx

    DECLARE @SalesTbl TABLE (DayCount smallint, Sales money, RunningTotal money)
    
    DECLARE @RunningTotal money
    
    SET @RunningTotal = 0
    
    INSERT INTO @SalesTbl 
    SELECT DayCount, Sales, null
    FROM Sales
    ORDER BY DayCount
    
    UPDATE @SalesTbl
    SET @RunningTotal = RunningTotal = @RunningTotal + Sales
    FROM @SalesTbl
    
    SELECT * FROM @SalesTbl
    

    他のすべての方法よりも優れていますが、行の順序が保証されているかどうかについて疑問があります。ただし、一時テーブルにインデックスが付けられている場合は正常に機能しているようです。

    • ネストされたサブクエリ9300ミリ秒
    • 自己参加6100ミリ秒
    • カーソル400ミリ秒
    • ローカル変数140ミリ秒に更新


    1. PostgreSQLで特定のテーブルのすべてのトリガーを一覧表示する3つの方法

    2. SQL Server(T-SQL)でクエリ結果を電子メールで送信するときに区切り文字をコンマに変更する

    3. PythonによるSQLインジェクション攻撃の防止

    4. NULL列に一意のインデックスを作成するにはどうすればよいですか?