首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多行转换为1列,而不需要在oracle中进行枢轴。

将多行转换为1列,而不需要在oracle中进行枢轴。
EN

Stack Overflow用户
提问于 2013-12-10 02:43:11
回答 2查看 6.6K关注 0票数 1

我有一个大型sql查询,它连接来自多个表的列,以提供这种格式的数据:

代码语言:javascript
复制
ID  CODE    Count   Action
-----------------------------
1   A       02      VIEWED
1   A       22      CLICKED
1   A       45      PRINTED
1   A       32      SCHEDULED
2   A       34      VIEWED
2   B       14      CLICKED
2   B       23      PRINTED
2   B       78      SCHEDULED
.
.
X   D       12      CLICKED

操作的值只能查看、单击、排定、打印。每个ID、代码的组合都有最多4行。如果没有计算操作(例如“单击”),则不存在用于该操作的行。

因此,一旦我有了结果集,我想把它压平,使其具有这种格式的数据:

代码语言:javascript
复制
Id  CODE   VIEWED   CLICKED  PRINTED  SCHEDULED
-----------------------------------------------
1   A       02         11       45      32
1   B       54         57       89      45
2   B       34         14       23      78
3   G       null       null     28      20
X   D       null       12       null    null

我的查询做了很多事情,但简而言之,它做到了:

代码语言:javascript
复制
SELECT ID,CODE, ACTION, COUNT(*) AS COUNT  
FROM MY_TABLE 
GROUP BY ID,CODE,ACTION. 

在这个查询中,我希望得到结果集,然后将行平铺。我不能使用union-all等来多次查询DB。

数据库是Oracle 9i数据库,因此支点功能无法工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-10 02:58:01

应该能够将SUMCASE一起使用,从GROUP BY子句中删除ACTION

代码语言:javascript
复制
SELECT ID, 
    CODE, 
    SUM(CASE WHEN ACTION = 'VIEWED' THEN 1 ELSE 0 END) Viewed, 
    SUM(CASE WHEN ACTION = 'CLICKED' THEN 1 ELSE 0 END) Clicked, 
    SUM(CASE WHEN ACTION = 'PRINTED' THEN 1 ELSE 0 END) Printed, 
    SUM(CASE WHEN ACTION = 'SCHEDULED' THEN 1 ELSE 0 END) Scheduled
FROM MY_TABLE 
GROUP BY ID,
    CODE
票数 1
EN

Stack Overflow用户

发布于 2013-12-10 12:41:12

代码语言:javascript
复制
 select id,code,decode(action,'VIEWED',count,'null') viewed,
                decode(action,'CLICKED',count,'null') Clicked, 
                decode(action,'PRINTED',count,'null') Printed,
                decode(action,'SCHEDULED',count,'null') Scheduled from you_table groub by ID,CODE;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20485051

复制
相关文章

相似问题

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