n個の行を1つのレコードにマージする必要があるSQLの問題を誰かが助けてくれますか?個々のレコードには、他のレコードと同じようにフィールドが入力されている場合とされていない場合があります。
基本的に、SQLで重複レコードが作成されるという問題があります。一部には、他の人にはない情報が含まれています。それらをマージする必要があり(ランク付けできます)、前のレコードに値が存在しない場合はフィールドを更新します(最初にランク付けされたものから始めます)。
たとえば、2つのユーザーレコードがある場合、1つには名前が入力され、もう1つには名が入力されます。これらは重複しており、合体のように1つのレコードにマージする必要があります。ただし、n行です。
基本的に、多くのレコードを1つに転置します。この場合、ランクの低い重複レコードにそのフィールドが入力され、ランクの高い行にフィールドが存在しない場合にのみ、フィールドが更新されます。
これは、問題の非常に単純化されたバージョンです。ご覧のとおり、SQL Fiddleを使用すると、スクリプトによって6つのレコードが作成されます。これらのレコードは2つのレコードにマージされ、すべてのフィールドに入力する必要があります。
問題は、x個の行が存在する可能性があることです。行数にばらつきがあるため、colesceステートメントを使用できません。
それが理にかなっていることを願っていますか?
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','','','bob@hotmail.com');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('BOB1','','John','','bob@hotmail.com');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('BOB1','','','Smith','bob@hotmail.com');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('MARK1','','Peter','','mark@hotmail.com');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('MARK1','Mark','','','mark@hotmail.com');
insert into Employee(EmployeeId,[First Name],[Middle Name],[Last Name],[E-Mail])
values('MARK1','','','Davis','mark@hotmail.com');
select * from [Employee]
それが理にかなっていることを願っています。
ありがとう