副问题[/!--empirenews.page--]
偶然辰我们在展示表中数据的时辰,必要将行转为列来表现,如以下情势:
原表布局展示如下: --------------------------- 产物名称??? 贩卖额???? 季度 --------------------------- 奶酪????????? 50???? 第一季度 奶酪????????? 60???? 第二季度 啤酒????????? 50???? 第二季度 啤酒????????? 80???? 第四序度 ---------------------------
此刻必要将上面的原表布局转换为如下所示的布局情势来展示: -------------------------------------------------------------------------- 产物名称?? 第一季度贩卖额?? 第二季度贩卖额?? 第三季度贩卖额?? 第四序度贩卖额 -------------------------------------------------------------------------- 奶酪 50 60?????????????? 0????????????? 0 啤酒 0 50?????????????? 0????????????? 80 --------------------------------------------------------------------------
一、建设贩卖表sale_hst表布局

--建设贩卖表
create table sale_hst
(
prdt_name varchar2(10),--产物名称
sale_amt number(8),--贩卖额
season varchar2(10)--季度
);

二、插入基本数据
--插入如上所示的基本数据
insert into sale_hst values (‘奶酪‘,50,‘第一季度‘);
insert into sale_hst values (‘奶酪‘,60,‘第二季度‘);
insert into sale_hst values (‘啤酒‘,80,‘第四序度‘);
三、行使SQL语句转换
方案1:行使case...when...then...else...end...语句

--方案1:行使case...when...then...else...end...语句
select
prdt_name,sum(case when season=‘第一季度‘ then sale_amt else 0 end) 第一季度贩卖额,sum(case when season=‘第二季度‘ then sale_amt else 0 end) 第二季度贩卖额,sum(case when season=‘第三季度‘ then sale_amt else 0 end) 第三季度贩卖额,sum(case when season=‘第四序度‘ then sale_amt else 0 end) 第四序度贩卖额
from sale_hst
group by prdt_name;

方案2:Oracle下可以用decode函数处理赏罚
声名:
Oracle下可以用decode函数处理赏罚: decode函数是Oracle PL/SQL中成果强盛的函数之一,今朝还只有Oracle公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此成果。
decode函数成果如下: decode(字段或字段的运算,值1,值2,值3)? 这个函数运行的功效是,当字段或字段的运算的值便是值1时,该函数返回值2,不然返回值3 虽然值1,值2,值3也可所以表达式,这个函数使得某些sql语句简朴了很多。

--方案2:Oracle下可以用decode函数处理赏罚
select
prdt_name,sum(decode(season,‘第一季度‘,sale_amt,0)) as 第一季度贩卖额,‘第二季度‘,0)) as 第二季度贩卖额,‘第三季度‘,0)) as 第三季度贩卖额,‘第四序度‘,0)) as 第四序度贩卖额
from sale_hst
group by prdt_name;

偶然辰我们又有如下的需求:
原表的数据情势展示如下:
shopping表: ---------------------------------- u_id?????? goods??????????? num ---------------------------------- 1?????????? 苹果?????????????? 2 2?????????? 梨子?????????????? 5 1?????????? 西瓜?????????????? 4 3?????????? 葡萄?????????????? 1 3?????????? 香蕉?????????????? 1 1?????????? 橘子?????????????? 3 ----------------------------------
转换为如下的情势1展示:
-------------------------------------------- u_id????????? goods_sum total_num -------------------------------------------- 1???????????? 苹果,西瓜,橘子 9 2???????????? 梨子 5 3???????????? 葡萄,香蕉 2 --------------------------------------------
转换为如下的情势2展示: ------------------------------------------------------ u_id????????? goods_sum total_num ------------------------------------------------------ 1???????????? 苹果(2斤),西瓜(4斤),橘子(3斤) 9 2???????????? 梨子(5斤) 5 3???????????? 葡萄(1斤),香蕉(1斤) 2 ------------------------------------------------------
一、建设购物表shopping表布局

--建设购物表shopping
create table shopping
(
u_id number(10),goods varchar2(8),num number(10)
);

(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|