在sql server中使用pivot将行转换为列

bejyjqdl  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(300)

我是新来支点,我有一个表如下。它有型号和组没有详细资料。该表包含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

我不知道我在哪里失踪。请帮我整理一下。

0h4hbjxa

0h4hbjxa1#

我推荐条件聚合 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 也。

相关问题