暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 我如何显示这样的结果集?

ASKTOM 2018-11-29
219

问题描述

嗨,朋友们!

我尝试使用case,pivot和其他方式来返回预期,但我没有成功。

创建表T1 (DATE_ID编号 (2),名称VARCHAR2(2),年龄编号 (2),ORDER_FLAG编号 (2));

插入T1值 ('1','A','21','1');
插入T1值 ('1','B','22','0');
插入T1值 ('2','A','21','0');
插入T1值 ('2','B','22','1');

从T1中选择 *;

/*

日期id名称年龄订单标记
1 A 21 1
1 B 22 0
2 A 21 0
2 B 22 1

*/



我需要的。

日期 _ 标识年龄 _ 21岁 _ 22岁
1 1 0
2 0 1



你能帮我吗 ???


专家解答

你并没有真正存储人们的年龄...是吗?

不管怎样,你需要一个枢轴。您需要一个子查询来排除该名称。或者,您将获得此列的隐式组,将其拆分为:

with rws as (
  select date_id, age, order_flag from t1
) 
  select * from rws
  pivot (
    sum ( order_flag ) for age in ( 21 age21, 22 age22 )
  ) ;

DATE_ID   AGE21   AGE22   
        1       1       0 
        2       0       1 

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论