码迷,mamicode.com
首页 > 其他好文 > 详细

一个查询转换

时间:2014-12-11 18:45:02      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   sp   on   div   

 题目:There are two table:  

T_A (name VARCHAR2(100)) 

T_B (name VARCHAR2(100), name_a VARCHAR2(100)); 

The values are:

 bubuko.com,布布扣

(1) Please write a SQL to output below result: 

Name         Apple       Orange       Banana 

-----------  ----------  -----------  ----------- 

Jane         Yes         Yes          Yes 

Leo          Yes         Yes          No 

David        No          No           Yes

 1 select name,
 2        case when ap>=1 then YES else NO end ap,
 3        case when og>=1 then YES else NO end og,
 4        case when ba>=1 then YES else NO end ba
 5   from (
 6 select name, sum(ap) ap, sum(og) og, sum(ba) ba
 7   from (select name_a name,
 8                decode(b.name, Apple, 1, 0) ap,
 9                decode(b.name, Orange, 1, 0) og,
10                decode(b.name, Banana, 1, 0) ba
11           from t_b b)
12  group by name)

 

(3)  Please write a SQL to output below result: 

(Find rows between 2 and 4, using ROWNUM) 

Name        Name_a 

---------   ------------- 

Orange       Jane 

Banana       Jane 

Apple        Leo 

1 select *
2   from t_b
3  where rownum < 5
4 minus
5 select * 
6   from t_b
7  where rownum  < 2

(4) Please write a Function: 

This function has a parameter which has the same data type as 

name in T_A and return the second fruit name in T_B.  

if one person has no the second fruit, the function return the 

first fruit. 

Example: pass „Jane? as parameter, return „Orange?; pass 

„David?, return „Banana?.

 1 create or replace function fun1(fname in varchar2) return varchar2 is
 2 fruit varchar2(10);
 3 n varchar2(10);
 4 ap number;
 5 og number;
 6 ba number;
 7 begin
 8   select name, ap, og, ba into n,ap,og,ba
 9     from (select name, sum(ap) ap, sum(og) og, sum(ba) ba
10             from (select name_a name,
11                          decode(b.name, Apple, 1, 0) ap,
12                          decode(b.name, Orange, 1, 0) og,
13                          decode(b.name, Banana, 1, 0) ba
14                     from t_b b)
15            group by name) 
16    where name = fname;
17    
18    if ap = 1 and og = 1 then select Orange into fruit from dual;
19    elsif ap = 1 and og = 0 and ba = 1 then select Banana into fruit from dual;
20    elsif ap = 0 and og = 1 and ba = 1 then select Banana into fruit from dual;
21    elsif ap = 1 and og = 0 and ba = 0 then select Apple into fruit from dual;
22    elsif ap = 0 and og = 1 and ba = 0 then select Orange into fruit from dual;
23    elsif ap = 0 and og = 0 and ba = 1 then select Banana into fruit from dual;
24    end if;
25    
26 
27    return (fruit);
28 end fun1;

这里暂时还没想出更好的办法。。。

 

一个查询转换

标签:style   blog   http   io   ar   color   sp   on   div   

原文地址:http://www.cnblogs.com/benbenduo/p/4158080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!