【发布时间】:2015-12-25 15:47:49
【问题描述】:
我使用的是 SQL Server 2008,我想根据输入列名和排序顺序(asc/desc)对数据进行排序。如何使下面的查询动态化?
DECLARE @iColumnName VARCHAR(24);
DECLARE @iSortOrder VARCHAR(10);
SET @iColumnName = 'ReceiptLocation'; -- ReceiptLocation/DeliverLocation/NominationNbr
SET @iSortOrder = 'DESC'; -- DESC / ASC
SELECT sum(NominationNbr)
,sum(ReceiptLocation)
,sum(DeliverLocation)
FROM tables
GROUP BY NominationNbr
,ReceiptLocation
,DeliverLocation
ORDER BY CASE @iColumnName
WHEN 'ReceiptLocation'
THEN ReceiptLocation
WHEN 'DeliverLocation'
THEN DeliverLocation
ELSE NominationNbr
END
CASE @iSortOrder
WHEN 'DESC'
THEN DESC
ELSE ASC
END
【问题讨论】:
标签: sql sql-server-2008 group-by sql-order-by