【发布时间】:2018-11-23 15:22:05
【问题描述】:
我正在使用一个按月存储金额的表格。该表被许多存储过程插入/更新。
我想要完成的工作:我想更新表格,使其具有基于以下列组合的唯一行:
Property_ID, Accound, AccountDescription, jobcd, costcd, asofdate
此外,更新将 SUM 以上组合的金额。但是,Update_ID 列也会更新并合并step_id。
总之,我想要一行按上面列出的列显示总金额。它将删除用于创建此总额的行。但是,它会保留step_Id 信息并将其添加到Update_ID 列中。
有没有办法在不涉及许多步骤的情况下做到这一点?这是一张没有索引的大表。
declare @temp as table
(
ID int,
step_ID varchar(120),
Update_ID varchar(1000),
Property_ID int,
Account int,
AccountDescription varchar(120),
jobcd varchar(20),
costcd varchar(20),
asofdate date,
amount money
)
INSERT INTO @temp (ID, step_ID, Update_ID, Property_ID, Account, AccountDescription, jobcd, costcd, asofdate, amount)
VALUES (1, 'Step 1.1', NULL, 50950, 41510, 'CAM&taxes billed', 'TMORFRA01' , 'LMORFRA01', '2019-09-01', '20.00'),
(2, 'Step 1.2', 'Step 1.0', 50950, 41510, 'CAM&taxes billed', 'TMORFRA01' , 'LMORFRA01', '2019-09-01', '180.00'),
(3, 'Step 1.1', NULL, 50950, 40110, 'Base rent billed', 'TMORFRA01' , 'LMORFRA01', '2019-09-01', '80.00'),
(4, 'Step 1.2', NULL, 50950, 40110, 'Base rent billed', 'TMORFRA01' , 'LMORFRA01', '2019-09-01', '100.00'),
(5, 'Step 1.3', NULL, 50950, 40110, 'Base rent billed', 'TMORFRA01' , 'LMORFRA01', '2019-09-01', '200.00')
SELECT * FROM @temp
预期结果:
declare @ExpectedResult as table
(
ID int ,
step_ID varchar(120),
Update_ID varchar(1000),
Property_ID int,
Account int,
AccountDescription varchar(120),
jobcd varchar(20),
costcd varchar(20),
asofdate date,
amount money
)
INSERT INTO @ExpectedResult (ID, step_ID, Update_ID, Property_ID, Account, AccountDescription, jobcd, costcd, asofdate, amount)
VALUES (1, 'Step 1.1', 'Step 1.0; Step 1.1 + Step 1.2: Sum Amounts;', 50950, 41510, 'CAM&taxes billed', 'TMORFRA01' , 'LMORFRA01', '2019-09-01', '200.00'),
(3, 'Step 1.1', 'Step 1.1 + Step 1.2 + Step 1.3: Sum Amounts', 50950, 40110, 'Base rent billed', 'TMORFRA01' , 'LMORFRA01', '2019-09-01', '380.00')
SELECT * FROM @ExpectedResult
【问题讨论】:
标签: sql-server sql-server-2008-r2 sum concat insert-update