Sample Header Ad - 728x90

Sql query result in a single row with multiple dynamic columns

-1 votes
2 answers
216 views
i have multiple rows and want to make dynamic column i tried below code with case it work fine but i need the column to be dynamic based on the count of max Code | EventId | Code | Date| | -------- | -------------- | -------- | | 1| A12|12/12/2020| | 1| A13|12/12/2020| | 2| A12|12/12/2020| | 2| A13|12/12/2020| | 3| A13|12/12/2020| i want it like below table | EventId | Code1 | Date1| Code2 | Date2| | -------- | -------------- | -------- | -------------- | -------- | | 1 | A12|12/12/2020| A13| 12/12/2020| | 2 | A12|12/12/2020| A13|12/11/2020| | 3 | A13|12/12/2021|
WITH Ranked AS (
    SELECT
        EventID,
        Date,
        Code 
        rn = ROW_NUMBER() OVER (PARTITION BY  EventID ORDER BY Date)
    FROM TableEvent
)
SELECT
    EventID,
    MAX(CASE WHEN rn = 1 THEN Date END) AS Date1,
    MAX(CASE WHEN rn = 1 THEN Code END) AS Code1, 
    MAX(CASE WHEN rn = 2 THEN Date END) AS Date2,
    MAX(CASE WHEN rn = 2 THEN Code END) AS Code2, 
FROM Ranked
GROUP BY EventID;
Asked by Sultan (1 rep)
Jul 24, 2024, 11:21 AM
Last activity: Jul 24, 2024, 03:40 PM