我正在尝试从一张表中选择按价格、年份、名称和其他字段排序的产品列表...... 问题在于当升序排序时,我必须让零值排在最后。
我的代码是:
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
这个方法可以正常工作,但是不要把零放在列表底部。 所以,我尝试进行转换(参见下一个代码),但是它给我报错:“附近的语法不正确”。
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
我感激任何帮助
END
了。很抱歉,我在建议代码之前没有测试它! - Iain Samuel McLean Elder