Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ta(ID, Field1)
- Tb(ID, Field2)
- Tc(ID, Field3)
- Ta
- ID Field1
- ---------
- 1 A
- 1 B
- Tb
- ID Field2
- ---------
- 1 C
- 1 D
- 2 E
- Tc
- ID Field3
- ---------
- 1 F
- 2 G
- 2 H
- ID Field1 Field2 Field3
- -----------------------
- 1 A C F
- 1 B D NULL
- 2 NULL E G
- 2 NULL NULL H
- PID Email
- ---------
- John john@test.com
- John john@mail.com
- John john@john.com
- PID Tel
- --------
- John 011
- John 022
- PID Email Tel
- ----------------------
- John john@test.com 011
- John john@mail.com 022
- John john@john.com NULL
- select coalesce(ta.id, tb.id, tc.id), ta.field1, tb.field2, tc.field3
- from (select ta.*, row_number() over (partition by id order by (select NULL)) as seqnum
- from ta
- ) ta full outer join
- (select tb.*, row_number() over (partition by id order by (select NULL)) as seqnum
- from tb
- ) tb
- on ta.id = tb.id and
- ta.seqnum = tb.seqnum
- (select tc.*, row_number() over (partition by id order by (select NULL)) as seqnum
- from tc
- ) tc
- on coalesce(ta.id, tb.id) = tc.id and
- coalesce(ta.seqnum, tb.seqnum) = tc.seqnum
- group by coalesce(ta.id, tb.id, tc.id),
- coalesce(ta.seqnum, tb.seqnum, tc.seqnum)
- order by 1, 2
- over (partition by id order by field<n>)
- WITH TaRanked AS
- (
- SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Field1) as Rnk, ID, Field1
- FROM Ta
- ),
- TbRanked AS
- (
- SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Field2) as Rnk, ID, Field2
- FROM Tb
- ),
- TcRanked AS
- (
- SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Field3) as Rnk, ID, Field3
- FROM Tc
- ),
- TUnion AS
- (
- SELECT Rnk, ID, Field1, NULL AS Field2, NULL AS Field3
- FROM TaRanked
- UNION ALL
- SELECT Rnk, ID, NULL, Field2, NULL
- FROM TbRanked
- UNION ALL
- SELECT Rnk, ID, NULL, NULL, Field3
- FROM TcRanked
- )
- SELECT ID, MIN(Field1), MIN(Field2), MIN(Field3)
- FROM TUnion
- GROUP BY ID, Rnk
- ORDER BY ID, Rnk
- 1 A C F
- 1 B D (null)
- 2 (null) E G
- 2 (null) (null) H
Add Comment
Please, Sign In to add comment