我常做的是通信方面的软件对数据库不太熟,恳求一SQL语句:表:    ID       Field1        Field2       Field3       sSign    1         120.0        100.0        50.2           1
    2         100           50           20            2
    1          20           0             10           1
//***********************************************************
字段field1/2/3都是金额,字段sSign是标志,代表是销售还是存款还是其它现在我想求的结果如下:   ID          Sum(Field1)   Sum(Field2)     Sum(Field3)
   1            140             100             60.2主要是对每个字段根据条件求和再列出。在列出的表中的ID不能重复。
谢谢了,如果分不够可以加。

解决方案 »

  1.   

    不是吧,如此简单的问题
    select id,sum(Field1),sum(Field2),sum(Field3) from table1 group by id
      

  2.   

    select id,Sum(Field1), Sum(Field2), Sum(Field3),Sum(int(sSign)) 
    from table group by id
      

  3.   

    还要加个 DISTINCT  将相同的过虑掉
      

  4.   

    merkey2002(小样的)老兄的可以达到目的了。
      

  5.   

    select id,sum(Field1),sum(Field2),sum(Field3) from table1 where sSign=1 //条件
    group by id
      

  6.   

    select id,sum(Field1),sum(Field2),sum(Field3) from table1 group by id
      

  7.   

    select Distinct id,sum(Field1),sum(Field2),sum(Field3) from table1 where sSign=1 //条件
    group by id
      

  8.   

    select Distinct id,sum(Field1),sum(Field2),sum(Field3) from table1 where sSign=1 //条件
    group by id
      

  9.   

    我常做的是通信方面的软件对数据库不太熟,恳求一SQL语句:表:    ID       Field1        Field2       Field3       sSign    1         120.0        100.0        50.2           1
        2         100           50           20            2
        1          20           0             10           1
    //***********************************************************
    字段field1/2/3都是金额,字段sSign是标志,代表是销售还是存款还是其它现在我想求的结果如下:
    //***********************************************************************************   ID      Sum(Field1)(条件是sSgin=1)   Sum(Field2)(条件是sSgin=2)     Sum(Field3)(等等)
       1            140                             100                           60.2主要是对每个字段根据条件求和再列出。在列出的表中的ID不能重复。
    谢谢了,如果分不够可以加。
      

  10.   

    select distinct a.id as id , ( select sum(field1) where ssgin='1'  and id=a.id ) as field1,( select sum(field2) where ssgin='2'  and id=a.id ) as field2,( select sum(field3) where ssgin='3'  and id=a.id ) as field3 from table a
      

  11.   

    select id,sSign,Sum(Field1), Sum(Field2), Sum(Field3),Sum(int(sSign)) 
    from table group by id,sSign
    -------------
       这样就可以了
      

  12.   

    不能结啦,没能满足要求,我看了一下,只有 lovendII(戒情人) 理解了我的意思,我先试一下可不可以。总之先谢谢各位。
      

  13.   

    我试了,不行,在同一个表里查询再做子查询,子查询中的查询条件不起作用。我以前也试过,大部分人还是没理解我的意思。
    我常做的是通信方面的软件对数据库不太熟,恳求一SQL语句:表:    ID       Field1        Field2       sSign    1         120.0          5            1
        1          10            50           2
        2          20            0            1
        2          0             80           2
        1          10            0            1
        1          0             10           2
    //***********************************************************
    字段field1/2/3都是金额,字段sSign是标志,代表是销售还是存款还是其它现在我想求的结果如下:
    //***********************************************************************************
       ID         field1         field2
       1           130            60
       2           20             80主要是对每个字段根据条件求和再列出。在列出的表中的ID不能重复。
    谢谢了,如果分不够可以加。???????????????????????????????????????????????????????????????
    我想现在可以理解了吧,谢谢大家!
      

  14.   

    补:   结果中的field1是根据sSing=1求和
       结果中的field2是要据sSing=2求和
      

  15.   

    这样说就明白了!select x.id, 
    (select sum(field1) from table1 where sSign=1 and ID= x.ID) as field1,
    (select sum(field2) from table1 where sSign=2 and ID= x.ID) as field2
    from
    (select distinct id from table1) x
      

  16.   

    看来SQLSERVER还是很GE(通用)的噢
      

  17.   

    用楼上hqhhh(枫叶)
    把这句
    select x.id
    改为
    select distinct x.id, 
    就可以了,我已经试过了
      

  18.   

    select x.id, 
    (select sum(field1) from table1 where sSign=1 and ID= x.ID) as field1,
    (select sum(field2) from table1 where sSign=2 and ID= x.ID) as field2
    from
    (select distinct id from table1) x
    --------- 这个应该可以的!
      

  19.   

    hqhhh(枫叶) 的答案完全正确,谢谢大家,准备结贴!
      

  20.   

    select id,sum(case sSign when 1 then field1 else 0 end) as sumF1WhileMark1,
    sum(case sSign when 2 then field2 else 0 end) as sumF2WhileMark2,
    sum(field3) as sumF3
    from test a
    group by id
    用这个,应该效率会高一点
    我测过应该能满足楼主要求
    有这么多方法
    楼主可以结贴了吧