萨拉姆使用它在“排序依据”条款忽略,情况下,当我在SQL Server存储过程
我使用CASE
END
以指定的列在ORDER BY
子句中使用。 但问题是,即使我通过"Total"
程序,该程序忽略子句,但它通过"ProductCode"
时正常工作。
这里是有这个问题的一部分:
ORDER BY
CASE
WHEN @ORDER_BY1='ProductCode' THEN CAST(dbo.Items.ProductCode AS NVARCHAR)
--When I pass 'Total' in this procedure, it ignores it. So it won't be ordered by Total
WHEN @ORDER_BY1='Total' THEN CAST(COUNT(*) AS NVARCHAR)
END ASC,
CASE
WHEN @ORDER_BY2='ProductCode' THEN CAST(dbo.Items.ProductCode AS NVARCHAR)
--When I pass 'Total' in this procedure, it ignores it. So it won't be ordered by Total
WHEN @ORDER_BY2='Total' THEN CAST(Count(*) AS NVARCHAR)
END ASC
Erm。对于每一行,'COUNT(*)'总是不变吗?在这种情况下,您将按照每行总是相同的顺序进行排序,因此行可以以任何顺序返回,对吗?我的猜测是它不会忽略这个子句,但是完全按照你所说的去做...... –
Thanks @MattGibson,你说得很对,该子句将“Count()”当作字符串,所以12来到2.我解决了它将它转换为INT。 –