Sql server SQL Server中的第二个Order By覆盖第一个
在下面的代码中,购买价格覆盖case 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
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请提供示例数据