click here to see Demo
declare @t table
(
val varchar(2),
digit int
)
insert into @t(val, digit)values('A', 0)
insert into @t(val, digit)values('A', 0)
insert into @t(val, digit)values('A', 0)
insert into @t(val, digit)values('B', 0)
insert into @t(val, digit)values('B', 0)
declare @t1 table
(
val varchar(2),
digit int
)
insert into @t1(val, digit)values('A', 12)
insert into @t1(val, digit)values('A', 0)
insert into @t1(val, digit)values('B', 10)
insert into @t1(val, digit)values('B', 0)
insert into @t1(val, digit)values('C', 23)
Select k.val, isNull(sum(k.digit + k1.digit), 0) as Digit from
(
Select ROW_NUMBER() over(partition by val order by val) as rowid, * from @t
)K
Left Join
(
Select ROW_NUMBER() over(partition by val order by val) as rowid, * from @t1
)K1
on k.val = k1.val AND K.rowid = K1.rowid
group by k.val, K.rowid
在SQL數據沒有訂單,除非你有一個'ORDER BY'條款,要求數據做的排序。在你的情況下,你有三個'A'記錄'0',沒有其他區分因素。你如何明確知道哪條記錄應該加入哪條記錄?你能修改你的數據來使用'IDENTITY'添加一個'id'列嗎?另外,您正在使用哪個版本的SQL Server? – MatBailie 2012-08-07 16:27:46
我使用的是2008.我有一個ID,它是在新表中發生的次數相同。 – Jabda 2012-08-07 16:43:16
這些桌子上的鑰匙是什麼?從它的外觀來看,你正在把一些相當簡單的東西變成噩夢。 A的首次出現取決於您選擇它們的順序...... – 2012-08-07 16:58:41