我有一个名为@Sorter
的参数,它传递一个int(1表示按某一组列排序,0表示按另一组列排序)。
在我的动态SQL中,当用户在执行过程时将1传入该参数时,我可以使用它。
' ORDER BY CASE WHEN + ''' + @Sorter + ''' = 1 THEN l.List END ASC,
''Year'', ''MonthNum'' DESC, i.Item ASC'
问题是当我尝试添加一个案例,当参数从用户传递的值为0时,它开始抱怨。如下:
' ORDER BY CASE WHEN + ''' + @Sorter + ''' = 1 THEN l.List END ASC,
CASE WHEN + ''' + @Sorter + ''' = 0 THEN ''Variance'' END ASC,
''Year'', ''MonthNum'' DESC, i.Item ASC'
错误是一个常数。
答案 0 :(得分:1)
你不需要额外的案例陈述,试试这个:
' ORDER BY CASE ''' + cast(@Sorter as varchar(1))+ ''' WHEN '1' THEN l.List
WHEN '0' THEN ''Variance'' END ASC,
''Year'', ''MonthNum'' DESC, i.Item ASC'
答案 1 :(得分:0)
你必须在陈述时使用一个案例。
ORDER BY
(CASE WHEN + ''' + @Sorter + ''' = 1 THEN l.List
WHEN + ''' + @Sorter + ''' = 0 THEN ''Variance'' END) ASC,
''Year'', ''MonthNum'' DESC, i.Item ASC'