Account表
name  money
a     100
b     0
c     100
------------------------
Detail表
name type   money
a    存款      200
a    取款     -200
a    存款      100查询出来的结果要这样用户  余额   取款    存款
a     100   -200   200
b     0     0      0   
c     100   0      0先感谢各位帮忙!

解决方案 »

  1.   

    select name as '用户',money as '余额','取款'=(select money from detail where name=[name] and [type]='取款'),'存款'=(select money from detail where [name]=[name] and [type]='存款') from account
    献丑了
      

  2.   

    用户  余额  取款    存款 
    a    100  -200  300 
    b    0    0      0  
    c    100  0      0 修改下`
      

  3.   

    java技术群:69705156
    可以交流
      

  4.   

    对于没有数据的,用nullif 或者 ifnull 等函数处理一下就行了!
      

  5.   

    oracle 好像是 nvl 函数!
      

  6.   


    select 字查询用不起 from ....
      

  7.   

    select nvl(sum(select money from detail b where b.type='取款'),0) as 取款  from account语法有问题啊``` - -`!
      

  8.   

    select A.NAME AS "用户",A.MONEY AS "余额",
    COALESCE((SELECT SUM(MONEY) FROM CLASSICCARS.DETAIL D WHERE D.NAME=A.NAME AND D.TYPE='取款'),0) AS "取款",
    COALESCE((SELECT SUM(MONEY) FROM CLASSICCARS.DETAIL E WHERE E.NAME=A.NAME AND E.TYPE='存款'),0) AS "存款"
    from CLASSICCARS.ACCOUNT A ;COALESCE 换成 NVL也可以的。手头没有数据库写SQL真是吃力啊,写完还得多看几遍,应该没错吧
      

  9.   

    上面那个是在myeclipse里面的Derby调的,那个破烂真难用。
    你在oracle里试试看吧,schema去掉。下面那个为准。
    select A.NAME AS "用户",A.MONEY AS "余额",
    COALESCE((SELECT SUM(MONEY) FROM DETAIL D WHERE D.NAME=A.NAME AND D.TYPE='取款'),0) AS "取款",
    COALESCE((SELECT SUM(MONEY) FROM DETAIL E WHERE E.NAME=A.NAME AND E.TYPE='存款'),0) AS "存款"
    from ACCOUNT A ;
      

  10.   


    你这样可以``如果type类型多了效率就不太高了`但是还是感谢你的帮助分给你了`谢谢`