我正在尝试为以下代码返回特定的订单。这用于动态检索列标题。但是我无法按照我想要的方式进行排序。感谢您的帮助
DECLARE @columns NVARCHAR(MAX)
SET @columns = N'';
SELECT @columns+=N''+ColumnX
FROM
(
SELECT
ROW_NUMBER() over (ORDER BY FullName ASC) AS RowNum,
N', p.'+QUOTENAME(ColumnX) as ColumnX
FROM TableX
GROUP BY ColumnX
) as x;
当我在()中运行select时,它会正确排序该数据,但是当我运行SELECT @Columns时,它不会以相同的顺序进行拉取。
例如:
select in () returns rows in correct order
,p.[Amy Smith],
,p.[Bob Jones]
,p.[Steve Jobs]
,p.[Vince Neel]
SELECT @ columns returns
,p.[Vince Neel],p.[Bob Jones],p.[Steve Jobs],p.[Amy Smith],
我不知道它是如何挑选订单的。
答案 0 :(得分:0)
添加一个ORDER BY
子句。否则,该序列可能是“不确定的”
DECLARE @columns NVARCHAR(MAX)
SET @columns = N'';
SELECT @columns+=N''+ColumnX
FROM
(
SELECT
ROW_NUMBER() over (ORDER BY FullName ASC) AS RowNum,
N', p.'+QUOTENAME(ColumnX) as ColumnX
FROM TableX
GROUP BY ColumnX
) as x
ORDER BY RowNum; -- Added this