0

我有以下形式的存储过程

SELECT key1 AS FirstKey, key2 AS SecondKey FROM table
ORDER BY
    CASE @sortOrderParam WHEN 'ASC' THEN
        CASE UPPER(@sortColumn)
        WHEN 'blabla' THEN FirstKey
        WHEN 'blibli' THEN FirstKey, SecondKey --Syntax error
        END
    END ASC,
    CASE @sortOrderParam WHEN 'DESC' THEN
    ...
    END DESC

但是,在某些情况下尝试按两列排序时出现语法错误。我怎样才能做到这一点 ?

谢谢 !

4

1 回答 1

1

Case 只能返回一个特定值,而不是一组列。您需要以不同的方式对其进行分解,例如:

SELECT key1 AS FirstKey, key2 AS SecondKey FROM table
ORDER BY
FirstKey, 
CASE @sortOrderParam WHEN 'ASC' THEN
    CASE UPPER(@sortColumn)
    WHEN 'blibli' THEN SecondKey --only relevant when blibli
    END
END ASC,
CASE @sortOrderParam WHEN 'DESC' THEN
...
END DESC

您还可以通过在适当的情况下附加您的数据来构建一个排序列。

于 2013-08-08T13:41:38.840 回答