任何人都可以幫助一個SQL問題我有我需要合併n個行到一個記錄。個人記錄可能有也可能沒有其他人填寫的字段。智能SQL合併 - n行,合併
基本上我有一個問題,在SQL中創建重複記錄。有些包含其他人的信息。我需要合併它們(我可以對它們進行排名),如果該值不存在於前一記錄中(從最高排名第一位開始),則更新一個字段。
例如,如果我有兩個用戶記錄,一個姓氏填充,另一個具有名字。這些都是重複的,需要合併成一條記錄,如合併。但是,這是n行。
它實質上是一個多記錄到一個轉置,其中只有當排名較低的重複記錄填充該字段並且該字段不存在於排名較高的排中時才更新字段。
這是一個非常簡化版本的問題。如您所見,使用SQL Fiddle腳本會創建6條記錄。這些記錄應合併爲2條記錄並填寫所有字段。
問題是,可能有x行數。由於行數不同,我無法使用coalesce語句。
希望有道理嗎?
CREATE TABLE [dbo].[Employee]([EmployeeId] varchar(10) NULL,
[First Name] [varchar](30) NULL,
[Middle Name] [varchar](30) NOT NULL,
[Last Name] [varchar](30) NOT NULL,
[E-Mail] [varchar](80) NOT NULL)
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('BOB1','Bob','','','[email protected]');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('BOB1','','John','','[email protected]');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('BOB1','','','Smith','[email protected]');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('MARK1','','Peter','','[email protected]');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('MARK1','Mark','','','[email protected]');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('MARK1','','','Davis','[email protected]');
select * from [Employee]
希望是有道理的。
感謝
如果您有解釋代碼,您的問題可能會更清楚 – codingbiz 2012-08-11 05:39:32
看起來您的問題與此類似:http://stackoverflow.com/q/11785805/10192 – GilM 2012-08-11 06:17:08
-1 ...很多努力回答你的問題;你還沒有評論任何答案或標記爲正確的! – whytheq 2012-08-27 09:20:58