我正在創建一個腳本,用於「合併」並從表中刪除重複行。該表包含地址信息,並使用整數字段將有關電子郵件的信息存儲爲位標誌(列名稱lngValue)。例如,lngValue & 1 == 1表示它的主要地址。更新列爲不同的聚合值
有兩次輸入同一封電子郵件的實例,但有時會使用不同的lngValues。爲了解決這個問題,我需要從所有重複項中取出lngValue,並將它們分配給一個倖存的記錄,並刪除剩餘的記錄。
迄今爲止我最大的頭痛是與記錄的「合併」。我想要做的是將重複記錄的所有lngValues合併在一起。這是迄今爲止我所知道的,它只能找到所有lngValues按位或者一起的值。
警告:亂碼提前
declare @duplicates table
(
lngInternetPK int,
lngContactFK int,
lngValue int
)
insert into @duplicates (lngInternetPK, lngContactFK, lngValue)
(
select tblminternet.lngInternetPK, tblminternet.lngContactFK, tblminternet.lngValue from tblminternet inner join
(select strAddress, lngcontactfk, count(*) as count from tblminternet where lngValue & 256 <> 256 group by strAddress, lngcontactfk) secondemail
On tblminternet.strAddress = secondemail.strAddress and
tblminternet.lngcontactfk = secondemail.lngcontactfk
where count > 1 and tblminternet.strAddress is not null and tblminternet.lngValue & 256 <> 256 --order by lngContactFK, strAddress
)
update @duplicates set lngValue = t.val
from
(select (sum(dupes.lngValue) & 65535) as val from
(select here.lngInternetPK, here.lngContactFK, here.lngValue from tblminternet here inner join
(select strAddress, lngcontactfk, count(*) as count from tblminternet where lngValue & 256 <> 256 group by strAddress, lngcontactfk) secondemail
On here.strAddress = secondemail.strAddress and
here.lngcontactfk = secondemail.lngcontactfk
where count > 1 and here.strAddress is not null and here.lngValue & 256 <> 256) dupes, tblminternet this
where this.lngContactFK = dupes.lngContactFK
) t
where lngInternetPK in (select lngInternetPK from @duplicates)
編輯:
由於這裏要求是一些樣本數據:
表名:tblminternet
列名稱:
lngInternetPK
lngContactFK
lngValue
strAddress
實施例第1行:
lngInternetPK:1
lngContactFK:1
lngValue:33
strAddress: 「[email protected]」
例行2:
lngInternetPK:2
lngContactFK :1
lngValue:40
strAddress:「[email protected]」
如果這兩個在這裏合併是所期望的結果:
lngInternetPK:1
lngContactFK:1
lngValue:41
strAddress: 「[email protected]」
其他必要的規則:
每個接觸可以有多個電子郵件,但每個電子郵件行必須是不同的(每個電子郵件只能顯示爲一行)。
你可以分享一些樣本數據的任何機會呢?看看數據現在的樣子以及期望的結果可能有助於產生一些答案。 – 2009-07-11 21:05:07
Griswold:已添加數據 – 2009-07-13 16:11:10
感謝您發佈數據。它有幫助。 – 2009-07-13 16:49:40