A表
ID  X
1   X1
2   X2
B表     
ID   M
1    B1
2    B2
C表  
ID   X
1     10
1     20
2     30
2     15SELECT A.ID,M,SUM(X) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID ORDER BY A.ID
我想要这样的结果,可咋不可以? 好象是M无效,在分组中再加M就可以,可我如果B表中的列很多,并都要显出来,
请问该怎么样做呢??

解决方案 »

  1.   

    上边ORDER BY应该是GROUP BY ,写错了
      

  2.   

    SELECT A.ID,M,SUM(X) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID ORDER BY A.ID 
    前面查询的对象必须加在order by的后面
    SELECT A.ID,M,SUM(X) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID ORDER BY A.ID ,M
      

  3.   

    SUM(X) 是哪个表阿,M是哪个表都没写
      

  4.   

    SELECT A.ID, b.M, SUM(C.X)
      FROM A, B,C
     WHERE A.ID = B.ID
       AND A.ID = C.ID
     GROUP BY A.ID, b.M
      

  5.   

    一种方法,GROUP BY里加上b表中的列
    别一种方法
    用sum(统计列) over (partition by分组条件)
      

  6.   

    hebo说的应该是这种
    SELECT A.ID,M,SUM(X) over (order by A.ID) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID ORDER BY A.ID 
      

  7.   

    hebo说的应该是这种SELECT A.ID,M,SUM(X) over (partition by A.ID) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID 
      

  8.   

    Y
    这种是用在你需要输出三个表的每条纪录每个字段(符合WHERE 条件的),但又想在每条纪录后面加上按一定分组条件产生的sum
      

  9.   

    有点明白了,可咋提示在"关键字 'over' 附近有语法错误。"??
      

  10.   

    我刚才是在SQL SERVER 测试的,好象不支持over (partition by 
    我在Oracle里测试了SELECT A.ID,M,SUM(X) over (partition by A.ID) FROM A,B,C WHERE A.ID=B.ID AND A.ID=C.ID .可他把全部的都显示出来了,没有求和? 后面在加GROUP BY  出错.以下是我的实际代码, 找不到办法实现用的个笨办法MAX(),可以达到效果,可这样应该是不好的好象.有啥好办法没?
    select 
      MAX(JYUYMD),seizomst.SEIZONO,MAX(TOKUICD),MAX(seizokbnnm), MAX(suryo),MAX(JYUNO),MAX(HINNM1),
    MAX(KYAKUHINBAN),MAX(OPTION4),MAX(OPTION5),MAX(optionnum1),MAX(optionnum2),MAX(optionnum3),
      MAX(OPTIONDATE1),MAX(OPTIONDATE3),MAX(OPTIONDATE3),MAX(option1),MAX(option2),MAX(option3),MAX(userCo3) ,
      SUM(JMAEDANH)+SUM(JYUJINH)+SUM(JATODANH) ,SUM(JMUJINH)
       from seizomst ,seizokbnmst,JISEKIDATA J   
    WHERE seizomst.seizokbn=seizokbnmst.seizokbn AND J.SEIZONO=seizomst.SEIZONO AND
     ( (seizomst.SEIZOKBN <=3) OR (seizomst.SEIZOKBN =6))
     GROUP BY seizomst.SEIZONO  order by seizomst.seizono
      

  11.   

    select DISTINCT ab.a,abc.c, ab.b,
    (select sum(x) from c where ab.a=c.a  group by a) as xx  
    from ab,c,abc 
    where ab.a=c.a
    and ab.a=abc.a
    这样好象可以?刚刚测试成功,可以不?
      

  12.   

    sql server不支持over的
    select DISTINCT ab.a,abc.c, ab.b, 
    (select sum(x) from c where ab.a=c.a  group by a) as xx   
    from ab,c,abc  
    where ab.a=c.a 
    and ab.a=abc.a 你这句用sum()over
    就是
    select DISTINCT ab.a,abc.c, ab.b, 
    sum(x) over (partition by ab.a) as xx
    from ab,c,abc  
    where ab.a=c.a 
    and ab.a=abc.a 
      

  13.   

    谢谢hebo2005,谢谢各位
    sum()over 是可以,可能我刚才测试没用对