克隆无效退款交易记录以取消对方

时间:2015-08-19 21:51:31

标签: sql-server sql-server-2012

Account_ID   Amount
123          200

结果

Account_ID   Amount
123          200
123          -200

通常情况下,我们的数据库将有两笔交易用于无效退款支付,但不知何故,只有少数记录只有一笔交易。

我知道我可以手动将相同的记录插入表中。 有没有其他方法可以克隆记录并将数量设置为负数而不使用insert statment?

1 个答案:

答案 0 :(得分:1)

尽管M.Ali说克隆记录并不好,但我们可以实现,但我并不确切知道它是否符合您的要求

DECLARE @T TABLE 
    ([Account_ID] int, [Amount] int)
;

INSERT INTO @T
    ([Account_ID], [Amount])
VALUES
    (123, 200)
;

;WITH CTE AS (select Account_ID,Amount,row_number()OVER(PARTITION BY Amount ORDER BY (Select NULL))RN from @T
CROSS APPLY(values('Account_ID',Account_ID),('Amount',Amount))M(v,s))
Select Account_ID,
CASE WHEN RN = 1 THEN cast(Amount as varchar) ELSE 
'-' + cast(Amount as varchar)END
from CTE