我有一個現有的數據庫,其中一些邏輯是由前端應用程序製作的。 現在我必須作出從該數據庫的報告,我面對的失蹤記錄proble其覆蓋在前端記錄的基礎,但在報告中有問題 考慮下表:用先前存在的記錄填充缺失的記錄
create table #T (id int, id1 int, label varchar(50))
create table #T1 (id int, T_id1 int, A int, B int, C int)
隨着值:
insert into #T values (10, 1, 'label1'), (10, 2, 'label2'), (10, 3, 'label3'), (10, 15, 'label15'), (10, 16, 'label16'), (20, 100, 'label100'), (20, 101, 'label101')
insert into #T1 values (10, 1, 100, 200, 300), (10, 15, 150, 250, 350), (20, 100, 151, 251, 351), (20, 101, 151, 251, 351)
,如果我做一個報告中,我們可以看到一些丟失的記錄:
select #T.id, #T.id1, #T1.A, #T1.B, #T1.C
from #T left join #T1 on #T.id1 = #T1.T_id1
結果:
id id1 A B C
10 1 100 200 300
10 2 NULL NULL NULL
10 3 NULL NULL NULL
10 15 150 250 350
10 16 NULL NULL NULL
20 100 151 251 351
20 101 151 251 351
預期的結果將是:
id id1 A B B
10 1 100 200 300
10 2 100 200 300
10 3 100 200 300
10 15 150 250 350
10 16 150 250 350
20 100 151 251 351
20 101 151 251 351
正如你可以在這裏看到丟失的數據填寫的第一個(在ID,ID1順序)以前的現有記錄的一個給定的ID。對於給定的id,可以有任意數量的「缺失」記錄,並且對於給定的id,在不存在記錄之後可以存在任意數量的現有記錄。 我能做到這一點用遊標,但我正在尋找一個解決方案,而光標
是否有可能,2個不同的行將具有相同的id和id1對,或者我可以將這些列作爲唯一對待? –
編號id,id1對(甚至id1單獨)是唯一的) – Gabor