任何人都可以帮助一个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