问题描述
嗨,朋友们!
我尝试使用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
你能帮我吗 ???
我尝试使用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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




