Ich verwende SQLServer2008 Express
Ich habe eine Tabelle und ein Skript zum Konvertieren der Zeilen in Spalten mit dem erwarteten Ergebnis als
PARENT_ID name01 name02 name03 name04
1 ABC DEF ABC2 DEF2
2 DEF3 null null null
Ich erhalte jedoch das folgende Ergebnis
PARENT_ID name01 name02 name03 name04
1 ABC DEF ABC2 DEF2
2 null null null null
Ich weiß, dass mit dem Code etwas nicht stimmt, ich kann es nur nicht herausfinden. Hoffe, jemand kann helfen.
CREATE TABLE #temp (
parent_id bigint NOT NULL
,dependent_id bigint not null
,date_of_birth date not null
,last_name varchar(100)
,first_name varchar(100)
,effective_start_date date
,effective_end_Date date
)
insert into #temp values (1,1,'1990-10-01','ABC',null,'1989-01-01','9999-12-31')
insert into #temp values (1,2,'1991-06-02','DEF',null,'1989-01-01','9999-12-31')
insert into #temp values (1,3,'1992-06-02','ABC2',null,'1989-01-01','9999-12-31')
insert into #temp values (1,4,'1993-06-02','DEF2',null,'1989-01-01','9999-12-31')
insert into #temp values (2,5,'2000-06-02','DEF3',null,'1989-01-01','9999-12-31')
SELECT PARENT_ID
,[1] as name01
,[2] as name02
,[3] as name03
,[4] as name04
FROM ( SELECT top(100) percent
PARENT_ID
, dependent_id
, (isnull(first_name,'')+last_name) as fullname
FROM #temp
where GETDATE() between effective_start_date and effective_end_Date
order by date_of_birth
) AS piv
PIVOT ( max(fullname)
FOR dependent_id IN ([1], [2], [3], [4])
) AS chld
Danke Elmer