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

更新:

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 回答
0

你为什么要这样做!我认为这样做没有任何意义。

我想更新您,您应该只将原始数据存储到数据库中,任何操作数据都不好存储,例如总数、百分比、平均值等。

您可以使用存储的原始数据在应用程序端轻松填充此类操作数据。

我想在这里请求请删除这种操作字段并使您的记录和设置更加动态。

我希望你清楚这一点。

谢谢...!

于 2013-04-17T17:48:09.347 回答