尝试以下
order by
CASE @OrderByUnique
WHEN '1' THEN asg.total_unique_groupcount
WHEN '0' THEN asg.total_groupcount
END desc
和
order by
CASE @OrderByUnique
WHEN 1 THEN asg.total_unique_groupcount
WHEN 0 THEN asg.total_groupcount
END desc
但它只有在我使用else的情况下才有效,所以出于某种原因,在我的case语句中我无法将其与true(1)或false(0)
相匹配order by
CASE @OrderByUnique
WHEN '1' THEN asg.total_unique_groupcount
WHEN '0' THEN asg.total_unique_groupcount
ELSE asg.total_groupcount
END desc
我的变量在我的函数顶部声明为
ALTER function [dbo].[myFunction]
(
@user varchar(30)
,@double_entry_flag bit
,@OrderByUnique bit = 1
)
答案 0 :(得分:1)
试试这个:
DECLARE @OrderByUnique bit = 1;
WITH Data (count1, count2) AS
(
SELECT 1, 4
UNION ALL
SELECT 2, 3
UNION ALL
SELECT 3, 2
UNION ALL
SELECT 4, 1
)
SELECT * FROM Data
ORDER BY CASE WHEN @OrderByUnique = 1 THEN count1 ELSE count2 END DESC
编辑:哦,顺便说一句,你的第一个例子也都有效。只是尝试用替换我的示例的最后一行
ORDER BY CASE @OrderByUnique WHEN 1 THEN count1 WHEN 0 THEN count2 END DESC
或
ORDER BY CASE @OrderByUnique WHEN '1' THEN count1 WHEN '0' THEN count2 END DESC
你会得到相同的结果。所以你的问题可能还有别的......