2014-11-06 4 views
0

Допустим, у меня есть этот SP:Как дать дополнительный параметр решить сортировку столбца

ALTER PROCEDURE [dbo].[testsp] 
    -- Add the parameters for the stored procedure here 
    @start datetime, 
    @end datetime, 
    @sort int = 1 
AS 
BEGIN 
    set nocount on; 
    select 
     t1.Name, 
     sum(t2.sum) as Salary 
    from 
     persons t1 inner join 
     payments t2 on(t1.ID = t2.PersonID) 
    where 
     t1.Active = 1 and 
     t2.TimeOfTransfer between @start and @end 
    group by 
     t1.Name 
    order by 
     [Salary] desc 
END 

Как написать свой заказ на, чтобы она сортировать по возрастанию или убыванию в зависимости от значения в @sort?

+0

Просто проверка - это для SQL Server, правильно? Какая версия? – gvee

ответ

1
... 
ORDER 
    BY CASE WHEN @sort = 1 THEN Salary END ASC 
    , CASE WHEN @sort = 0 THEN Salary END DESC 

P.S. Я бы, вероятно, изменить определение вашего параметра @sort либо в битном (значения 0 или 1 только) или полукокса (4) (для «ASC» или «DESC») :-)

+0

Я пробовал это раньше, но это только дает мне «Недопустимое имя столбца« Зарплата ». :( – Dave

+0

@ Дайте опубликовать полный запрос, который вы пробовали. – gvee

Смежные вопросы