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

ただし、場合によっては、2 つの列で並べ替えようとすると構文エラーが発生します。どうやってやるの ?

ありがとう !

4

1 に答える 1

1

Case は、一連の列ではなく、1 つの特定の値のみを返すことができます。おそらく次のように、別の方法で分解する必要があります。

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 に答える