我有兩個表格詳細信息和頭部。詳細表格將首先寫入。之後,頭表將被寫入。頭是細節表的摘要。我想保留頭表的細節參考。我有一個解決方案,但它並不優雅,需要重複求和過程中使用的連接和過濾器。我正在尋找更好的解決方案。以下是我目前擁有的一個例子。在這個例子中,我簡化了表格結構。在現實世界中,總和非常複雜。詳細信息表的如何在選擇插入語句中跟蹤自動生成的ID
-- Preparation
create table #detail (
detail_id int identity(1,1)
, code char(4)
, amount money
, head_id int null
);
create table #head (
head_id int identity(1,1)
, code char(4)
, subtotal money
);
insert into #detail (code, amount) values ('A', 5);
insert into #detail (code, amount) values ('A', 5);
insert into #detail (code, amount) values ('B', 2);
insert into #detail (code, amount) values ('B', 2);
-- I would like to somehow simplify the following two queries
insert into #head (code, subtotal)
select code, sum(amount)
from #detail
group by code
update #detail
set head_id = h.head_id
from #detail d
inner join #head h on d.code = h.code
-- This is the desired end result
select * from #detail
期望的最終結果:
detail_id code amount head_id 1 A 5.00 1 2 A 5.00 1 3 B 2.00 2 4 B 2.00 2
生成詳細記錄是從生成頭記錄的過程中獨立的過程,但感謝您的建議。 – 2010-12-21 20:55:29
+1:這是父母/子女關係中的約定 – 2010-12-21 20:56:03