Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 Row_Number pagination Sort problem

Author  Topic 

jwallz
Starting Member

14 Posts

Posted - 2008-02-16 : 19:09:03
I've been banging my head on this for hours. I can't get a case statement to work. I'm trying to create a procedure to handle dynamic paging/sorting. When i try a case statement to handle the 'order by' it doesn't work. This works:

SELECT id,recName,date,catName
FROM
(SELECT r.id,r.recName,r.date,c.catName,ROW_NUMBER() OVER
(ORDER BY recName) as RowNum
FROM recipe r INNER JOIN category c ON r.categoryID = c.id
) as rec
WHERE RowNum BETWEEN 30 and 40

but this doesn't:

Declare @sort varchar

set @sort = 'name'

SELECT id,recName,date,catName
FROM
(SELECT r.id,r.recName,r.date,c.catName,ROW_NUMBER() OVER
(ORDER BY
CASE @sort
WHEN 'name' THEN r.recName
WHEN 'date' THEN r.date
WHEN 'category' THEN c.catName
END
) as RowNum
FROM recipe r INNER JOIN category c ON r.categoryID = c.id
) as rec
WHERE RowNum BETWEEN 30 and 40

jwallz
Starting Member

14 Posts

Posted - 2008-02-16 : 19:30:59
I figured it out as soon as i posted. I wasn't setting length of variable. name was being passed as n.

Declare @sort varchar(4)
Go to Top of Page

khtan
In (Som, Ni, Yak)

17689 Posts

Posted - 2008-02-16 : 19:44:50
you will need at least 8 as the longest value of @sort is 'category'
Declare @sort varchar(8)


KH
[spoiler]Time is always against us[/spoiler]

Go to Top of Page

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2008-02-18 : 03:08:29
http://sqlblogcasts.com/blogs/madhivanan/archive/2007/12/04/column-length-and-data-length.aspx

Madhivanan

Failing to plan is Planning to fail
Go to Top of Page
   

- Advertisement -