mysql - ORDER BY 子句中的 IF 语句

标签 mysql sql reporting-services report

我正在努力解决在 order by 子句中获取 if 语句或 case 语句的语法。

这是我当前的代码:

order by 
    case WHEN (col.line_item_no != 0) THEN Parent_Catalog_Desc,
                 col.line_no, spc.attr_value, col.line_item_no ELSE
       Parent_Catalog_Desc, col.line_no END 

说我缺少关键字。如果您需要更多背景信息,请告诉我。

基本上,如果 line_item_no 字段不为 0,则它遵循第一个排序顺序,如果它为 0,我将使用不同的排序顺序。

最佳答案

您可以分解出前两列。然后对剩余的列使用 CASE:

order by Parent_Catalog_Desc, col.line_no,
         (CASE WHEN col.line_item_no <> 0 THEN spc.attr_value END),
         (CASE WHEN col.line_item_no <> 0 THEN col.line_item_no END) 

CASE 是 SQL 语句中返回单个值的表达式。因此它不能用于返回多个值。

关于mysql - ORDER BY 子句中的 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34725226/

相关文章:

PHP MYSQL - 升序/降序排序按钮

mysql - 在一列中为相邻列的所有行插入相同的值

SQL Server 临时表与游标

reporting-services - 显示/隐藏组上的 Reporting Services 图标不正确

reporting-services - 如何将移动平均线添加到 Report Builder 2.0 图表

sql - 如何在 SSRS 中编写条件以根据值动态更改单元格的颜色

PHP - 分页 - 为什么我收到此错误 : not found in MySQL result index 14?

php - LOAD DATA LOCAL INFILE 只进入5行

sql - T-SQL 创建动态 where 语句?

javascript - "Azure Mobile Services"和 "Azure App Service"之间的不同 sql 结果