首页 > 解决方案 > 当我们将 () 括号添加到 SQL Server 中的列值时,排序顺序发生了变化

问题描述

我有一个表格,表格中的数据如下所示。

在此处输入图像描述

数据的排序应该基于 Code,Model,SequenceNo,Qual1 (Order by Code,Model,SequenceNo,Qual1) 我准备了下面的 SQL 查询,它给出了完美的结果。

SELECT Market
    ,Year
    ,Make
    ,BatchNo
    ,BatchLineNo
    ,SequenceNo
    ,Code
    ,Model
    ,Qual1
    ,Qual2
    ,TRANSACTION
FROM TABLE1
ORDER BY Code
    ,Model
    ,SequenceNo
    ,Qual1

当事务列的值是 DD 或 DC 时,我必须将括号 () 包含到代码列中结果集。

SELECT Market
    ,Year
    ,Make
    ,BatchNo
    ,BatchLineNo
    ,SequenceNo
    ,
    ,CASE 
        WHEN (
                TRANSACTION = 'DC'
                OR TRANSACTION = 'DD'
                )
            THEN '(' + Code + ')'
        ELSE Code
        END AS Code Model
    ,Qual1
    ,Qual2
    ,TRANSACTION
FROM TABLE1
ORDER BY Code
    ,Model
    ,SequenceNo
    ,Qual1

在此处输入图像描述 我不确定如何使用括号实现代码以及类似于我的第一个结果集的排序顺序。

标签: sqlsql-serversql-server-2012sql-server-2008-r2

解决方案


为什么不使用您的逻辑创建一个计算列并使用它来订购?

最终(如果你总是按这 4 列排序)你可以事件 CONCAT 4 列并且只使用一列进行排序。


推荐阅读