因项目需要,下面这个视图搞不定,希望高手帮忙一下,谢谢表一
项目编号 项目名称 项目金额
10 项目1 100
11 项目2 200表二
金额编号 项目编号 金额数量 金额类型 
10 10 30 收入
11 10 15 收入
13 10 10 支出
14 11 50 收入
15 11 20 支出
求一个生成如下表三的视图的方法表三
项目标号 项目名称 项目金额 金额数量 金额类型 项目总金额 收入总金额  支出总金额
10 项目1 100 30 收入 300 95 30
10 项目1 100 15 收入 300 95 30
10 项目1 100 10 支出 300 95 30
11 项目2 200 50 收入 300 95 30
11 项目2 200 20 支出 300 95 30表三为表一和表二组成的视图表三里的”项目总金额“是表一里所有“项目金额”的总和,“收入总金额”是表二里所有“金额类型”为收入的总和,支出总金额是表二里所有“金额类型”为支出的总和

解决方案 »

  1.   

    select a.* , b.金额数量 , b.金额类型 , 项目总金额 = (select sum(项目金额) from 表一) , t.收入总金额 , t.支出总金额 
    from 表一 a , 表二 b , 
    (
      select 项目编号 , 
           sum(case 金额类型 when '收入' then 金额数量 else 0 end) 收入总金额 ,
           sum(case 金额类型 when '支出' then 金额数量 else 0 end) 支出总金额 
      from 表二 
      group by 项目编号
    ) t
    where a.项目编号 = b.项目编号 and a.项目编号 = t.项目编号
      

  2.   

    --上面错了,这个是对的.
    create table 表一(项目编号 int,项目名称 varchar(10),项目金额 int)
    insert into 表一 values(10, '项目1', 100) 
    insert into 表一 values(11, '项目2', 200) 
    create table 表二(金额编号 int , 项目编号 int , 金额数量 int , 金额类型 varchar(10))
    insert into 表二 values(10, 10, 30, '收入') 
    insert into 表二 values(11, 10, 15, '收入') 
    insert into 表二 values(13, 10, 10, '支出') 
    insert into 表二 values(14, 11, 50, '收入') 
    insert into 表二 values(15, 11, 20, '支出') 
    goselect a.* , b.金额数量 , b.金额类型 , 
           项目总金额 = (select sum(项目金额) from 表一) , 
           收入总金额 = (select sum(金额数量) from 表二 where 金额类型 = '收入'),
           支出总金额 = (select sum(金额数量) from 表二 where 金额类型 = '支出')
    from 表一 a , 表二 b 
    where a.项目编号 = b.项目编号drop table 表一,表二/*
    项目编号        项目名称       项目金额        金额数量        金额类型       项目总金额       收入总金额       支出总金额       
    ----------- ---------- ----------- ----------- ---------- ----------- ----------- ----------- 
    10          项目1        100         30          收入         300         95          30
    10          项目1        100         15          收入         300         95          30
    10          项目1        100         10          支出         300         95          30
    11          项目2        200         50          收入         300         95          30
    11          项目2        200         20          支出         300         95          30(所影响的行数为 5 行)*/
      

  3.   


    create table one(项目编号 int,项目名称 varchar(50),项目金额 int)
    insert into one select 10,'项目1',100
    insert into one select 11,'项目2',200create table two(金额编号 varchar(10),项目编号 varchar(10),金额数量 int,金额类型 varchar(10))
    insert into two select 10,10,30,'收入'
    insert into two select 11,10,15,'收入'
    insert into two select 13,10,10,'支出'
    insert into two select 14,11,50,'收入'
    insert into two select 15,11,20,'支出'
    select a.项目编号,a.项目名称,a.项目金额,金额数量,金额类型,
    (select sum(项目金额) from one)'项目总金额',
    (select sum(金额数量) from two where 金额类型='收入')'收入总金额',
    (select sum(金额数量) from two where 金额类型='支出')'支出总金额' 
    from  one a,two b 
    where a.项目编号=b.项目编号
      

  4.   

    create table 表一(项目编号 int,项目名称 varchar(10),项目金额 int)
    insert into 表一 values(10, '项目1', 100) 
    insert into 表一 values(11, '项目2', 200) 
    create table 表二(金额编号 int , 项目编号 int , 金额数量 int , 金额类型 varchar(10))
    insert into 表二 values(10, 10, 30, '收入') 
    insert into 表二 values(11, 10, 15, '收入') 
    insert into 表二 values(13, 10, 10, '支出') 
    insert into 表二 values(14, 11, 50, '收入') 
    insert into 表二 values(15, 11, 20, '支出') 
    goselect a.* , b.金额数量 , b.金额类型 , 
           项目总金额 = (select sum(项目金额) from 表一) , 
           收入总金额 = (select sum(金额数量) from 表二 where 金额类型 = '收入'),
           支出总金额 = (select sum(金额数量) from 表二 where 金额类型 = '支出')
    from 表一 a , 表二 b 
    where a.项目编号 = b.项目编号drop table 表一,表二/*
    项目编号        项目名称       项目金额        金额数量        金额类型       项目总金额       收入总金额       支出总金额       
    ----------- ---------- ----------- ----------- ---------- ----------- ----------- ----------- 
    10          项目1        100         30          收入         300         95          30
    10          项目1        100         15          收入         300         95          30
    10          项目1        100         10          支出         300         95          30
    11          项目2        200         50          收入         300         95          30
    11          项目2        200         20          支出         300         95          30(所影响的行数为 5 行)*/