Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. page_no title
  2. -----------------
  3. 1 pancake
  4. 2 pizza
  5. 3 pasta
  6. 5 cookie
  7.  
  8. left_title right_title
  9. ------------------------
  10. NULL pancake
  11. Pizza pasta
  12. NULL cookie
  13.  
  14. SELECT
  15. CASE WHEN id % 2 = 0
  16. THEN title
  17. END AS left_title,
  18. CASE WHEN id %2 != 0
  19. THEN title
  20. END AS right_title
  21. FROM
  22. recipes
  23.  
  24. select max(case when id % 2 = 0 then title end) as left_title,
  25. max(case when id % 2 = 1 then title end) as right_title
  26. from recipes
  27. group by id / 2;
  28.  
  29. DECLARE @table TABLE (
  30. pageno int,
  31. title varchar(30)
  32. )
  33.  
  34. INSERT INTO @table
  35. VALUES (1, 'pancake')
  36. , (2, 'pizza')
  37. , (3, 'pasta')
  38. , (5, 'cookie')
  39.  
  40.  
  41. ;
  42. WITH cte_pages
  43. AS ( -- generate page numbers
  44. SELECT
  45. 0 n,
  46. MAX(pageno) maxpgno
  47. FROM @table
  48. UNION ALL
  49. SELECT
  50. n + 1 n,
  51. maxpgno
  52. FROM cte_pages
  53. WHERE n <= maxpgno),
  54. cte_left
  55. AS ( --- even
  56. SELECT
  57. n,
  58. ROW_NUMBER() OVER (ORDER BY n) rn
  59. FROM cte_pages
  60. WHERE n % 2 = 0),
  61. cte_right
  62. AS ( --- odd
  63. SELECT
  64. n,
  65. ROW_NUMBER() OVER (ORDER BY n) rn
  66. FROM cte_pages
  67. WHERE n % 2 <> 0)
  68. SELECT
  69. tl.title left_title,
  70. tr.title right_title --- final output
  71. FROM cte_left l
  72. INNER JOIN cte_right r
  73. ON l.rn = r.rn
  74. LEFT OUTER JOIN @table tl
  75. ON tl.pageno = l.n
  76. LEFT OUTER JOIN @table tr
  77. ON tr.pageno = r.n
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement