Sql 获取数组的不同列值

Sql 获取数组的不同列值,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,使用下面的查询,我将列值获取到一个数组中。现在我想从中获得不同的列值 DECLARE @columns NVARCHAR(MAX) = '', SELECT @columns+=QUOTENAME(Question_no) + ',' FROM marks_details order by Question_no -- remove the last comma SET @columns = LEFT(@columns, LEN(@columns) - 1); 标记和详细信息 Subm

使用下面的查询,我将列值获取到一个数组中。现在我想从中获得不同的列值

DECLARE
@columns NVARCHAR(MAX) = '',

SELECT 
@columns+=QUOTENAME(Question_no) + ','
FROM
marks_details  order by Question_no

-- remove the last comma
SET @columns = LEFT(@columns, LEN(@columns) - 1);
标记和详细信息

Submission_id   Question_no
    200             1
    200             2
    300             2
    301             3
    302             3
@columns应该是[1,2,3]

我建议:

DECLARE @columns NVARCHAR(MAX) = '';

SELECT @columns += QUOTENAME(Question_no) + ','
FROM (
  SELECT Question_no
  FROM marks_details
  GROUP BY Question_no
) X
ORDER BY Question_no;

-- remove the last comma
SET @columns = LEFT(@columns, LEN(@columns) - 1);
select @columns = string_agg( question_no, ',') within group (order by question_no)
from (select distinct question_no
      from marks_details
     ) md;

是一把小提琴。

@DaleK。对