我正在尝试为下面的代码返回特定的顺序。 这用于动态检索列标题。 但我无法让它按照我想要的方式排序。 任何帮助不胜感激
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],
我不知道它是如何挑选订单的。
添加一个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