Guest User

Untitled

a guest
May 25th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. SET @OrderByColumn = 'AddedDate'
  2. SET @OrderDirection=1;
  3. .
  4. .
  5. .
  6. ORDER BY
  7. CASE WHEN @OrderByColumn='AddedDate' THEN CONVERT(varchar(50),AddedDate)
  8. WHEN @OrderByColumn='Visible' THEN CONVERT(varchar(2), Visible)
  9. WHEN @OrderByColumn='AddedBy' THEN AddedBy
  10. WHEN @OrderByColumn='Title' THEN Title
  11. END
  12.  
  13. ORDER BY
  14. CASE WHEN @OrderDirection=0 THEN 1
  15. ELSE
  16. CASE WHEN @OrderByColumn='AddedDate' THEN CONVERT(varchar(50),AddedDate)
  17. WHEN @OrderByColumn='Visible' THEN CONVERT(varchar(2), Visible)
  18. WHEN @OrderByColumn='AddedBy' THEN AddedBy
  19. WHEN @OrderByColumn='Title' THEN Title
  20. END
  21. END ASC,
  22. CASE WHEN @OrderDirection=1 THEN 1
  23. ELSE
  24. CASE WHEN @OrderByColumn='AddedDate' THEN CONVERT(varchar(50),AddedDate)
  25. WHEN @OrderByColumn='Visible' THEN CONVERT(varchar(2), Visible)
  26. WHEN @OrderByColumn='AddedBy' THEN AddedBy
  27. WHEN @OrderByColumn='Title' THEN Title
  28. END
  29. END DESC
  30.  
  31. CREATE PROCEDURE GetProducts
  32. (
  33. @OrderBy VARCHAR(50),
  34. @Input2 VARCHAR(30)
  35. )
  36. AS
  37. BEGIN
  38. SET NOCOUNT ON
  39.  
  40. SELECT Id, ProductName, Description, Price, Quantity
  41. FROM Products
  42. WHERE ProductName LIKE @Input2
  43. ORDER BY
  44. CASE
  45. WHEN @OrderBy = 'ProductNameAsc' THEN ProductName
  46. END ASC,
  47. CASE
  48. WHEN @OrderBy = 'ProductNameDesc' THEN ProductName
  49. END DESC
  50.  
  51. END
  52.  
  53. DECLARE @multiplier int;
  54.  
  55. SELECT @multiplier = CASE @Direction WHEN 1 THEN -1 ELSE 1 END;
  56.  
  57. SELECT
  58. Columns you actually want
  59. FROM
  60. (
  61. SELECT
  62. Columns you actually want,
  63. ROW_NUMBER() OVER (ORDER BY AddedDate) AS AddedDateSort,
  64. ROW_NUMBER() OVER (ORDER BY Visible) AS VisibleSort,
  65. ROW_NUMBER() OVER (ORDER BY AddedBy) AS AddedBySort,
  66. ROW_NUMBER() OVER (ORDER BY Title) AS TitleSort
  67. FROM
  68. myTable
  69. WHERE
  70. MyFilters...
  71. ) foo
  72. ORDER BY
  73. CASE @OrderByColumn
  74. WHEN 'AddedDate' THEN AddedDateSort
  75. WHEN 'Visible' THEN VisibleSort
  76. WHEN 'AddedBy' THEN AddedBySort
  77. WHEN 'Title' THEN TitleSort
  78. END * @multiplier;
Add Comment
Please, Sign In to add comment