0

私は以下の操作をしたい:

Sale ID     Q1   Q2              Total           Net Amount
530095243   0    12,600.00       12,600.00       17,657.17 
530095243   0    5,057.00        5,057.00        17,657.17 
530095243   0    (51,857.30)     (51,857.30)     17,657.17 
530095243   0    (51,567.60)     (51,567.60)     17,657.17 
530095243   0    51,567.60       51,567.60       17,657.17 
530095243   0    51,857.47       51,857.47       17,657.17 

正味金額列には合計の合計があります....私の場合、以下のように最後の行に合計を表示したいと思います:

Sale ID     Q1   Q2              Total           Net Amount
530095243   0    12,600.00       12,600.00       0
530095243   0    5,057.00        5,057.00        0 
530095243   0    (51,857.30)     (51,857.30)     0 
530095243   0    (51,567.60)     (51,567.60)     0
530095243   0    51,567.60       51,567.60       0 
530095243   0    51,857.47       51,857.47       17,657.17 
4

2 に答える 2

0

なぜあなたはこれをしたいのですか!これを行う意味はないと思います。

生データのみをデータベースに保存する必要があることを更新したいと思います。たとえば、合計、パーセンテージ、平均などの運用データは保存するのに適していません。

この種の運用データは、保存された生データを使用してアプリケーション エンドで簡単に入力できます。

ここで、この種の操作フィールドを削除して、レコードと設定をより動的にするようお願いしたいと思います。

これでクリアしていただければ幸いです。

ありがとう...!

于 2013-04-17T17:48:09.347 に答える
0

アップデート:

DECLARE @temp TABLE
(
        Sale_ID BIGINT 
      , Q1 INT              
      , Q2 DECIMAL(10,2)     
      , Total DECIMAL(10,2)
      , Net_Amount DECIMAL(10,2)
)

INSERT INTO @temp (Sale_ID, Q1, Q2, Total, Net_Amount)
VALUES 
    (530095243,   0,    12600.00,   12600.00, 17657.17), 
    (530095243,   0,    5057.00,    5057.00,  17657.17), 
    (530095243,   0,    51857.30,   51857.30, 17657.17), 
    (530095243,   0,    51567.60,   51567.60, 17657.17), 
    (530095243,   0,    51567.60,   51567.60, 17657.17), 
    (530095243,   0,    51857.47,   51857.47, 17657.17),
    (530095244,   0,    12600.00,   12600.00, 17657.17), 
    (530095244,   0,    5057.00,    5057.00,  17657.17), 
    (530095244,   0,    51857.47,   51857.47, 17657.17)  

DECLARE @new_table TABLE
(
        Sale_ID BIGINT 
      , Q1 INT              
      , Q2 DECIMAL(10,2)     
      , Total DECIMAL(10,2)
      , Net_Amount DECIMAL(10,2)
)

;WITH t AS 
(
    SELECT  
          Sale_ID
        , Q1
        , Q2
        , Total
        , Net_Amount
        , RNum = ROW_NUMBER() OVER (PARTITION BY Sale_ID ORDER BY Sale_ID, Q1, Q2, Total, Net_Amount)
    FROM @temp
),
mx AS 
(
    SELECT 
          LRow = MAX(RNum)
        , Sale_ID
    FROM t
    GROUP BY Sale_ID
)
INSERT INTO @new_table (Sale_ID, Q1, Q2, Total, Net_Amount)
SELECT  t.Sale_ID
    ,   t.Q1
    ,   t.Q2
    ,   t.Total
    ,   Net_Amount = CASE WHEN mx.LRow = t.RNum THEN t.Net_Amount ELSE 0 END
FROM t t
JOIN mx ON t.Sale_ID = mx.Sale_ID

SELECT * 
FROM @new_table
于 2013-04-17T12:40:09.730 に答える