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

以前の行データに基づいてSQLテーブルの列を自動計算する

    仮定

    1.テーブルの構造は次のようになります

    Date | In Stock | Out Stock
    

    2.新しい列を挿入します balanceを計算する前に 。

    3.日付はPrimary Columnです (一意+NULL以外

    上記の仮定をとる:

    SPを作成しました C#で使用する場合

    1.一時テーブルを作成します 割り当てられたRow Number Rank()を使用する

    select 
    rank() OVER (ORDER BY [Date]) as [Rank],
    t1.[Date],
    t1.[in stock],
    t1.[out stock]
    --,t1.[in stock]-t1.[out stock] balance
    into #temp1
    from (your table name)
    ;
    

    2.上記のtemp tableを使用します バランスを取得するには

    WITH x AS
    (
        SELECT 
            [Rank],
            [Date],
            [in stock],
            [out stock],
            bal=([in stock]-[out stock])
        FROM #temp1
        WHERE [Rank] = 1
        UNION ALL
        SELECT 
            y.[Rank],
            y.[Date],
            y.[in stock],
            y.[out stock],
            x.bal+(y.[in stock]-y.[out stock])
        FROM x INNER JOIN #temp1 AS y
        ON y.[Rank] = x.[Rank] + 1
    )
    SELECT 
        [Date],
        [in stock],
        [out stock],
        Balance = bal
    FROM x
    ORDER BY Date
    OPTION (MAXRECURSION 10000);
    

    これが SQLFiddle です。 確認できる場所。



    1. Oracleデータベースが自動インクリメントをサポートしているかどうかを検出するにはどうすればよいですか?

    2. ロックとは何ですか |通信バッファリソースとは?

    3. mysql-特定のホストが提供したconnect_errorsの数を照会できますか?

    4. カードとサービスごとに、最新のレコードと(同点の場合)より高い値またはパーセンテージを取得するためにクエリを実行します