繁体   English   中英

使用 Pivot 将 SQL 服务器中的行转换为列

[英]Convert Rows to Column in SQL Server using Pivot

我是 pivot 的新手,我有一张如下表。 它有 Model 编号和组号详细信息。 该表包含 10 个不同的组。

在此处输入图像描述

我正在尝试实现这样的结果集。 只想列出每个组下的所有 Model。

在此处输入图像描述

我尝试使用此 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中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM