首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql db2转换为宽格式

sql db2转换为宽格式
EN

Stack Overflow用户
提问于 2017-07-21 18:13:49
回答 1查看 92关注 0票数 1

我有一张这样的桌子:

代码语言:javascript
复制
id type
-- ----
1  A
1  B
2  A
2  C

我想把它转换成宽格式,即

代码语言:javascript
复制
id typeA typeB typeC
-- ----- ----- -----
1  yes   yes   NULL
2  yes   NULL  yes

我尝试过这样做:

代码语言:javascript
复制
select distinct id,
case when type = 'A' then yes else NULL end as typeA
case when type = 'B' then yes else NULL end as typeB
case when type = 'C' then yes else NULL end as typeC
from test

但正如你可以猜到的那样,我最终得到了:

代码语言:javascript
复制
id typeA typeB typeC
-- ----- ----- -----
1  yes   NULL   NULL
1  NULL  yes    NULL
1  NULL  NULL   NULL
2  yes   NULL   NULL
2  NULL  NULL   NULL
2  NULL  NULL   yes

也就是说,我最终得到了一个稀疏表,但我希望每个id只有一行。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-21 18:15:59

使用Min/Max聚合和Group By来修复它。

代码语言:javascript
复制
SELECT id, 
MIN(CASE WHEN type = 'A' THEN 'yes' ELSE NULL END) AS typeA,
MIN(CASE WHEN type = 'B' THEN 'yes' ELSE NULL END) AS typeB,
MIN(CASE WHEN type = 'C' THEN 'yes' ELSE NULL END) AS typeC 
FROM test 
GROYP BY id 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45235020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档