Im trying to turn a single column of data,
| id |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
into:
| col1 | col2 | col3 |
|---|---|---|
| 1 | 2 | 3 |
| 4 | 5 | 6 |
I figured it would be something to do with pivots but I’m still unsure how to accomplish this.
Advertisement
Answer
We can try using a pivot query with the help of ROW_NUMBER:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY id) rn
FROM yourTable
)
SELECT
MAX(CASE WHEN rn % 3 = 1 THEN id END) AS col1,
MAX(CASE WHEN rn % 3 = 2 THEN id END) AS col2,
MAX(CASE WHEN rn % 3 = 0 THEN id END) AS col3
FROM cte
GROUP BY (rn - 1) / 3;