Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- page_no title
- -----------------
- 1 pancake
- 2 pizza
- 3 pasta
- 5 cookie
- left_title right_title
- ------------------------
- NULL pancake
- Pizza pasta
- NULL cookie
- SELECT
- CASE WHEN id % 2 = 0
- THEN title
- END AS left_title,
- CASE WHEN id %2 != 0
- THEN title
- END AS right_title
- FROM
- recipes
- select max(case when id % 2 = 0 then title end) as left_title,
- max(case when id % 2 = 1 then title end) as right_title
- from recipes
- group by id / 2;
- DECLARE @table TABLE (
- pageno int,
- title varchar(30)
- )
- INSERT INTO @table
- VALUES (1, 'pancake')
- , (2, 'pizza')
- , (3, 'pasta')
- , (5, 'cookie')
- ;
- WITH cte_pages
- AS ( -- generate page numbers
- SELECT
- 0 n,
- MAX(pageno) maxpgno
- FROM @table
- UNION ALL
- SELECT
- n + 1 n,
- maxpgno
- FROM cte_pages
- WHERE n <= maxpgno),
- cte_left
- AS ( --- even
- SELECT
- n,
- ROW_NUMBER() OVER (ORDER BY n) rn
- FROM cte_pages
- WHERE n % 2 = 0),
- cte_right
- AS ( --- odd
- SELECT
- n,
- ROW_NUMBER() OVER (ORDER BY n) rn
- FROM cte_pages
- WHERE n % 2 <> 0)
- SELECT
- tl.title left_title,
- tr.title right_title --- final output
- FROM cte_left l
- INNER JOIN cte_right r
- ON l.rn = r.rn
- LEFT OUTER JOIN @table tl
- ON tl.pageno = l.n
- LEFT OUTER JOIN @table tr
- ON tr.pageno = r.n
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement