编程论坛's Archiver

elvis123 发表于 2007-11-24 13:35

请教2个问题

[font=Arial][size=1][font=Arial][size=9pt]TABLE[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]如下[/size][/size][/font][font=Arial][size=1]
[/size][/font]
[font=????÷ów][size=1][size=9pt]日期[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]收入[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]支出[/size][/size][/font][font=Arial][size=1]
[/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/1 50 30[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/2 45 60[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/5 60 10[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/5 60 10 [/size][/font][/size][/font]
[font=????÷ów][size=1][size=9pt]能否用[/size][/size][/font][font=Arial][size=1][font=Arial][size=9pt]SELECT[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]語句得出以下結果[/size][/size][/font][font=Arial][size=1]
[/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]1.[/size][/font][/size][/font]
[font=????÷ów][size=1][size=9pt]日期[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]收入[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]支出[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]餘額[/size][/size][/font][font=Arial][size=1]
[/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/1 50 30 20[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/2 45 60 5[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/5 120 20 105[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2.[/size][/font][/size][/font]
[font=????÷ów][size=1][size=9pt]日期[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]收入[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]支出[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]餘額[/size][/size][/font][font=Arial][size=1]
[/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/1 50 30 20[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/2 45 60 5[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/3 0 0 5[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]2000/3/4 0 0 5 [/size][/font][/size][/font]
[font=Arial][size=1]
[/size][/font]
[font=Arial][size=1]
[/size][/font]
[font=Arial][size=1][font=Arial][size=9pt][font=Arial][size=1][font=Arial][size=9pt]1.[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]用[/size][/size][/font][font=Arial][size=1][font=Arial][size=9pt]SQL Plus[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]產生以下報表[/size][/size][/font][font=Arial][size=1][font=Arial][size=9pt].(scott/tiger@mdstest)[/size][/font][/size][/font]
[font=Arial][size=1]
[/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]   1.[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]使用表[/size][/size][/font][font=Arial][size=1][font=Arial][size=9pt]emp,dept[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]   2.[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]寫成一個可以用在[/size][/size][/font][font=Arial][size=1][font=Arial][size=9pt]SQL Plus[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]中執行的[/size][/size][/font][font=Arial][size=1][font=Arial][size=9pt]Script[/size][/font][/size][/font]
[font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]使用[/size][/size][/font][font=Arial][size=1][font=Arial][size=9pt]SQLPlus[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]的[/size][/size][/font][font=Arial][size=1][font=Arial][size=9pt]column[/size][/font][/size][/font][font=????÷ów][size=1][size=9pt]等定義[/size][/size][/font][font=Arial][size=1]
[/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]   3. Format[/size][/font][/size][/font]
[font=Arial][size=1]
[/size][/font]
[font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]部門名稱[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]人數[/size][/size][/font][font=Arial][size=1]
[/size][/font][font=????÷ów][size=1][size=9pt]工資總額[/size][/size][/font][font=Arial][size=1]
[/size][/font]
[font=Arial][size=1]
[/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]        A                       2             1000[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]        B                       3             2000[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]        sum                                   3000[/size][/font][/size][/font]
[font=Arial][size=1][font=Arial][size=9pt]最后一行SUM怎么加?[/size][/font][/size][/font]
[/size][/font][/size][/font]

ILoveMK 发表于 2007-11-25 02:14

你的问题不难,我明天再给你答案吧,现在没空。[em12]

ILoveMK 发表于 2007-11-25 21:05

第一个问题:
SQL> select * from test;

COLA             COLB       COLC
---------- ---------- ----------
2000/03/01         50         30
2000/03/02         45         60
2000/03/05         60         10
2000/03/05         60         10

1.
select a,b,c,sum(d) over (order by a asc rows between unbounded preceding and current row) d from(
select cola a,sum(colb) b,sum(colc) c,sum(colb)-sum(colc) d from test
group by cola order by cola
) order by a
/

A                   B          C          D
---------- ---------- ---------- ----------
2000/03/01         50         30         20
2000/03/02         45         60          5
2000/03/05        120         20        105

2.
select a,b,c,sum(d) over (order by a rows between unbounded preceding and current row) d
from(
select cold a,nvl(sum(colb),0) b,nvl(sum(colc),0) c,nvl(sum(colb)-sum(colc),0) d
from test,
(select trunc(to_date('2000/03/01','yyyy/mm/dd'))+rownum-1 cold from dual
connect by rownum<(select to_number(to_char(max(cola),'dd'))+1 from test)) test2
where test2.cold=test.cola(+)
group by test2.cold
order by test2.cold
)
/

A                   B          C          D
---------- ---------- ---------- ----------
2000/03/01         50         30         20
2000/03/02         45         60          5
2000/03/03          0          0          5
2000/03/04          0          0          5
2000/03/05        120         20        105

第二个问题:
SQL> select * from test;

NAME         NUM        SAL
----- ---------- ----------
A              2       1000
B              3       2000

select nvl(name,'sum'),num,sum(sal) from test
group by rollup(name,num)
having grouping_id(name,num)!=1
/

NVL(N        NUM   SUM(SAL)
----- ---------- ----------
A              2       1000
B              3       2000
sum                    3000

飙马 发表于 2007-11-26 20:16

LS厉害![em12]

比蜗牛快些 发表于 2007-12-4 21:59

厉害[img]http://bbs.bc-cn.net/images/smilies/default/lol.gif[/img]
[img]http://bbs.bc-cn.net/images/smilies/default/lol.gif[/img]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.