POI*_*OIR 10 sql sorting select sql-order-by
我试图从一张表中选择按价格,年份,名称和其他订购的产品列表....问题是我必须在排序升序时使零值最后.
我的代码是:
SELECT * FROM Product P
ORDER BY CASE WHEN @OrderBy='Date ASC' THEN Date END ASC,
CASE WHEN @OrderBy='Price ASC' THEN Price END ASC,
CASE WHEN @OrderBy='Title ASC' THEN Title END ASC,
CASE WHEN @OrderBy='' THEN Match END
Run Code Online (Sandbox Code Playgroud)
这有效,但不要将零置于列表的底部.所以,我试图对其进行转换(请参阅下一个代码),但它在","附近给出了错误语法错误.
SELECT * FROM Product P
ORDER BY CASE WHEN @OrderBy='Price ASC' THEN
(case A.Price WHEN 0 THEN 1 ELSE 0 END,A.Price )
END ASC
Run Code Online (Sandbox Code Playgroud)
我感谢任何帮助
您可以通过测试两次价格订购来做到这一点:
SELECT * FROM Product P
ORDER BY CASE WHEN @OrderBy='Date ASC' THEN Date END ASC,
CASE WHEN @OrderBy='Price ASC' THEN CASE WHEN Price = 0 THEN 1 ELSE 0 END ASC,
CASE WHEN @OrderBy='Price ASC' THEN Price END ASC,
CASE WHEN @OrderBy='Title ASC' THEN Title END ASC,
CASE WHEN @OrderBy='' THEN Match END
Run Code Online (Sandbox Code Playgroud)
顺便说一句,当@orderBy不等于字符串时,case 表达式的隐式值为 null。当排序列包含所有空值时,它会有效地禁用该属性的排序。
| 归档时间: |
|
| 查看次数: |
2561 次 |
| 最近记录: |