现有一表
id name1 money1 name2 money2 year
1   张    100    王    200    2006
2   王    100    李    200    2007
3   王     50    王    500    2007想查询姓名为 王  时对应的 每年的钱数总额
返回表应该为
id  money year求达人帮帮忙啊(最多只能发100,不够继续加分)

解决方案 »

  1.   

    select id,sum(money) money,year
    from
    (
      select id,money1 money,year from tb
      union all
      select id,money2 money,year from tb
    ) x
    group by id,year 
      

  2.   

    select id,money1 as [money],[year] from 表 where name1='王' 
    union all 
    select id,money2 as [money],[year] from 表 where name2='王'
      

  3.   

    select id,sum(money) money,year
    from
    (
      select id,name,money1 money,year from tb
      union all
      select id,name,money2 money,year from tb
    ) x
    where name='王'
    group by id,year 
      

  4.   

    select 
        t.id,sum(t.[money]) as [money],t.[year] 
    from 
       (select id,money1 as [money],[year] from 表 where name1='王' 
        union all 
        select id,money2 as [money],[year] from 表 where name2='王') as t
    group by
        t.id,t.[year]
      

  5.   

    这样子?--> liangCK小梁 于2008-09-09
    --> 生成测试数据: #T
    if object_id('tempdb.dbo.#T') is not null drop table #T
    create table #T (id int,name1 nvarchar(2),money1 int,name2 nvarchar(2),money2 int,year int)
    insert into #T
    select 1,'张',100,'王',200,2006 union all
    select 2,'王',100,'李',200,2007 union all
    select 3,'王',50,'王',500,2007--SQL查询如下:select id,sum(money) money,year
    from
    (
      select id,name1 name,money1 money,year from #T 
      union all
      select id,name2 name,money2 money,year from #T 
    ) x
    where name='王'
    group by id,year /*
    id          money       year
    ----------- ----------- -----------
    1           200         2006
    2           100         2007
    3           550         2007(3 行受影响)*/
      

  6.   

    SELECT ID,MONEY=SUM(MONEY),YEAR FROM (
    SELECT ID,MONEY=SUM(MONEY1),YEAR FROM TB WHERE NAME1='王' GROUP BY YEAR,ID
    UNION ALL 
    SELECT ID,MONEY=SUM(MONEY2),YEAR FROM TB WHERE NAME2='王' GROUP BY YEAR,ID
    ) A
    GROUP BY YEAR,ID
      

  7.   

    select max(id),sum(money),year from tb where name='王' group by year
      

  8.   

    真够快的,多谢各位了,帮了俺这sql文盲了`````
      

  9.   

    select id,case when name1='王' then money1 else 0 end+case when name2='王' then money2 else 0 end as [money],year
    from tab
    where name1='王' or name2='王'