Sql server SQL Server中的第二个Order By覆盖第一个

Sql server SQL Server中的第二个Order By覆盖第一个,sql-server,database,left-join,sql-order-by,Sql Server,Database,Left Join,Sql Order By,在下面的代码中,购买价格覆盖case order by语句 SELECT i.products_mpn, i.active, i.distributor_code, i.sales_price FROM @duplicates d LEFT JOIN import i ON i.products_mpn = d.products_mpn AND i.distributor_code = (SELECT TOP 1 distribut

在下面的代码中,购买价格覆盖case order by语句

SELECT
    i.products_mpn, i.active,
    i.distributor_code, i.sales_price
FROM  
    @duplicates d
LEFT JOIN
    import i ON i.products_mpn = d.products_mpn 
             AND i.distributor_code = (SELECT TOP 1 distributor_code 
                                       FROM dbo.kting_ICECAT_import 
                                       WHERE products_mpn = d.products_mpn 
                                       ORDER BY 
                                          (SELECT 
                                               CASE
                                                  WHEN (i.distributor_code = 'x' or i.distributor_code = 'y') AND CAST(stock as int) > 0 
                                                     THEN 2
                                                  WHEN CAST(stock as int) > 0 
                                                     THEN 1
                                                  ELSE 0
                                               END) DESC, 
                                               CAST(purchase_price AS decimal(28,12)))

有没有办法让它先按案例说明进行订购,然后按
购买价格

如果您希望先应用
案例
说明进行订购,然后再按
购买价格
进行订购,那么您的
订购方式
的条款已经在正确的位置。我不知道
SELECT
CASE
表达式中做了什么,甚至不知道当前查询是否运行。你可能就是这么想的:

ORDER BY CASE WHEN (i.distributor_code = 'x' or i.distributor_code = 'y') AND
                   CAST(stock as int) > 0 THEN 2
              WHEN CAST(stock as int) > 0 THEN 1
              ELSE 0
         END DESC, 
         CAST(purchase_price AS DECIMAL(28,12))

问题出在SELECT的顺序中。我使用了左侧连接“I.distributor_code”中的列,应该是distributor_code

请提供示例数据