薩拉姆使用它在「排序依據」條款忽略,情況下,當我在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。 –