首页 > 解决方案 > 将一列排序/拆分为一行中的不同视图列

问题描述

我在创建视图时遇到问题,该视图应将表的一列拆分为一行中的三个不同列。

数据表如下所示:

桌子

我想要做的是为每个类型(类型的数量固定为三个)创建一个视图,其中三个 ID/序列号。不同颜色的大小相同(颜色数量也固定为三种)排成一排,如下所示:

想要查看

附加数据(如重量,...)位于此之后。

到目前为止我得到的是:

CREATE VIEW [dbo].[Typ1]
AS SELECT 
Size AS Size, 
CASE WHEN Color = 'Blue' THEN SerialNo END AS SerialNoBlue , 
CASE WHEN Color = 'Grey' THEN SerialNo END AS SerialNoGrey, 
CASE WHEN Color = 'Green' THEN SerialNo END AS SerialNo Green
FROM [Table] 
WHERE Typ = 'Typ1'

结果是这样的:

目前来看

我的问题是,是否有办法“合并”列 X 相同的行?

还是有完全不同的方法来做到这一点?

标签: sqltsqlsql-view

解决方案


你需要一个条件聚合

CREATE VIEW [dbo].[Typ1]

AS SELECT Size AS Size,
          max(CASE WHEN Color = 'Blue' THEN SerialNo END) AS SerialNoBlue ,
          max(CASE WHEN Color = 'Grey' THEN SerialNo END) AS SerialNoGrey, 
          max(CASE WHEN Color = 'Green' THEN SerialNo END) AS SerialNo Green
FROM [Table] 
WHERE Typ = 'Typ1' group by Size

推荐阅读