使用数据透视表将 SQL 服务器中的行转换为列

Convert Rows to Column in SQL Server using Pivot

我是 pivot 的新手,我有一个如下所示的 table。它有型号和组别详细信息。 table 包含 10 个不同的组。

我正在努力实现这样的结果集。只想列出每个组下的所有模型。

我尝试使用这个 SQL 查询,但在这里我得到了部分结果。它只显示一行。

SELECT *
FROM (
    SELECT DISTINCT ModelNo
        ,GroupNo
    FROM #Table
    ) d
pivot(max(ModelNo) FOR GroupNo IN (
            [1]
            ,[2]
            ,[3]
            ,[4]
            ,[5]
            ,[6]
            ,[7]
            ,[8]
            ,[9]
            ,[10]
            )) piv

我不确定我错过了哪里。请帮我整理一下。

我推荐条件聚合而不是 pivot -- 它更加通用。

您需要的是 row_number(),因此查询如下所示:

select max(case when groupno = 1 then modelno end) as group_01,
       max(case when groupno = 2 then modelno end) as group_02,
       . . .
from (select t.*,
             row_number() over (partition by groupno order by modelno) as seqnum
      from t
     ) t
group by seqnum;

您也可以将这个想法融入到 pivot 中。