我喜欢做以下操作:
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
答案 0 :(得分: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
答案 1 :(得分:0)
为什么要这样做!我认为这没有任何意义。
我想更新您应该只将原始数据存储到数据库中,任何操作数据都不适合存储,例如总数,百分比,平均数等。
您可以使用存储的原始数据在应用程序端轻松填充此类操作数据。
我想在此请求删除此类操作字段,并使您的记录更加动态。
我希望你明白这一点。
谢谢...!