June 23, 2006 at 6:48 am
Hello,
I have table structure like this:
call_id | event | param1 | param2 | param3 |
1 | 1 | x | r | s |
1 | 2 | y | g | f |
1 | 3 | z | n | d |
I would like to have all data for the same call id in one row, for example:
call_id | event_1 | param1_1 | param2_1 | param3_1 | event_2 | param1_2 | param2_2 | param3_2 | event_3 | param1_3 | param2_3 | param3_3 |
1 | 1 | x | r | s | 2 | y | g | f | 3 | z | n | d |
Please advise.
Regards, Saša
June 23, 2006 at 7:04 am
If the table is fixed as specified then either of these
SELECT call_id,
1 AS [event_1],
MAX(CASE WHEN event=1 THEN param1 ELSE null END) AS [param1_1],
MAX(CASE WHEN event=1 THEN param2 ELSE null END) AS [param2_1],
MAX(CASE WHEN event=1 THEN param3 ELSE null END) AS [param3_1],
2 AS [event_2],
MAX(CASE WHEN event=2 THEN param1 ELSE null END) AS [param1_2],
MAX(CASE WHEN event=2 THEN param2 ELSE null END) AS [param2_2],
MAX(CASE WHEN event=2 THEN param3 ELSE null END) AS [param3_2],
3 AS [event_3],
MAX(CASE WHEN event=3 THEN param1 ELSE null END) AS [param1_3],
MAX(CASE WHEN event=3 THEN param2 ELSE null END) AS [param2_3],
MAX(CASE WHEN event=3 THEN param3 ELSE null END) AS [param3_3]
FROM
GROUP BY call_id
ORDER BY call_id
SELECT e1.call_id,
e1.event AS [event_1],
e1.param1 AS [param1_1],
e1.param2 AS [param2_1],
e1.param3 AS [param3_1],
e2.event AS [event_2],
e2.param1 AS [param1_2],
e2.param2 AS [param2_2],
e2.param3 AS [param3_2],
e3.event AS [event_3],
e3.param1 AS [param1_3],
e3.param2 AS [param2_3],
e3.param3 AS [param3_3]
FROM e1
INNER JOIN e2 ON e2.call_id = e1.call_id AND e2.event = 2
INNER JOIN e3 ON e3.call_id = e1.call_id AND e3.event = 3
WHERE e1.event = 1
ORDER BY e1.call_id
however if the number of columns is variable then you will need to use dynamic sql
Far away is close at hand in the images of elsewhere.
Anon.
June 23, 2006 at 7:12 am
Thanks
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply