
Originariamente inviata da
mau79
Ciao a tutti,
ho una query che estrae i seguenti dati in questo modo:
| ID |
Persona 1 |
Persona 2 |
Persona 3 |
Persona 4 |
| 11 |
Pinco Pallino |
|
|
Pinco Pallino3 |
| 11 |
|
Pinco Pallino2 |
|
Pinco Pallino4 |
Io vorrei poter avere una tabella così:
| ID |
Persona |
| 11 |
Pinco Pallino |
| 11 |
Pinco Pallino2 |
| 11 |
Pinco Pallino 3 |
| 11 |
Pinco Pallino 4 |
È fattibile a livello di query/store procedure in MS SQL Server?
Ciao e grazie
Mau
codice:
USE tempdb
go
if OBJECT_ID('[dbo].[T1]') is not null drop table [dbo].[T1]
go
CREATE TABLE [dbo].[T1]
(
[ID] [int] NULL,
[Pers1] [nvarchar](50) NULL,
[Pers2] [nvarchar](50) NULL,
[Pers3] [nvarchar](50) NULL,
[Pers4] [nvarchar](50) NULL
) ON [PRIMARY]
GO
insert into [dbo].[T1] ( [ID], [Pers1], [Pers2], [Pers3], [Pers4] )
values(11,'Pers11',null,null,'Pers14')
insert into [dbo].[T1] ( [ID], [Pers1], [Pers2], [Pers3], [Pers4] )
values(11,null,'Pers22',null,'Pers24')
-- la query che cerchi
select qq.* from
(
select
T1.id
,case q.N
when 1 then t1.pers1
when 2 then t1.pers2
when 3 then t1.pers3
when 4 then t1.pers4
end as Pers
from
T1 cross join
(
select 1 as N
union all
select 2
union all
select 3
union all
select 4
) as q
) as qq
where qq.Pers is not null