sql - 将一列排序/拆分为一行中的不同视图列
问题描述
我在创建视图时遇到问题,该视图应将表的一列拆分为一行中的三个不同列。
数据表如下所示:
我想要做的是为每个类型(类型的数量固定为三个)创建一个视图,其中三个 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 相同的行?
还是有完全不同的方法来做到这一点?
解决方案
你需要一个条件聚合
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
推荐阅读
- ios - 在 didSelectRowAtIndexPath 之前重新加载 UITableView
- php - PHP错误地将JSON编码到文件
- php - 使用提取方法优化 laravel 项目
- wordpress - wordpress 和 apache 出现 301 重定向错误
- couchdb - 恢复已删除的文档
- javascript - 使用 Javascript 计算 JSON 嵌套数组中值的重复次数
- reactjs - React Router 为没有 props 的组件获取路由更改的数据
- php - Angular 6 单页模板,但路线不同
- javascript - 如何使用 javascript 读取 .txt 文件并在 HTML 中使用其内容
- visual-c++ - 使 MSVC 针对特定微架构进行优化