表结构和数据如下所示:tb1pid  tid   money
1    1     4.5
2    2     4
3    2     4
4    3     5.5
5    3     5.5
6    4     4需要求tid不重复记录money的和,也就是pid为4.5+4+5.5+4=19

解决方案 »

  1.   

    select count(money) from (select distinct tid,money from tb1)
      

  2.   

    Select
    tid,
    SUM([money]) As [money]
    From
    (Select Distinct tid, [money] From tb1) A
    Group By
    tid
      

  3.   

    select sum(money) from (select distinct tid,money from tb1) aa
      

  4.   


    看錯了Select
    SUM([money]) As [money]
    From
    (Select Distinct tid, [money] From tb1) A--或者Select
    SUM([money]) As [money]
    From
    (Select tid, [money] From tb1 Group By tid, [money]) A
      

  5.   

    select sum(money) from (select distinct tid,money from tb1) a
      

  6.   

    刚才的求助没写完整,实际的需求是这样的:有三张表tbp,tpt,tpu通过主外键关联,现在想根据uname分组,对money求和,并剔除uname和tname值相同的行。我写的是:select tbu.uname,sum(tbp.money) from tbp inner join tpt on tbp.tid=tbt.tid inner join tbu on tbp.uid=tbu.uid group by tbu.uname但是这样显然是重复计算了行。tbppid  tid tname   uid    uname     money 
    1    1    A       1      aa      4.5
    2    2    B       1      aa      4     
    3    2    B       1      aa      4      
    4    2    B       2      bb      4
    5    3    C       2      bb      5.5
    6    3    C       2      bb      5.5
    7    4    D       2      bb      4tbttid  uname
    1     A
    2     B
    3     C 
    4     D
    5     E
    uid   uname
    1      aa
    2      bb 
    3      cc 
      

  7.   

    如果tname和uname都相同的行则只统计一条,最后要求的结果是uname   sum(money)aa      4.5+4=9.5
    bb      4+4.5+4=13.5
      

  8.   

    SELECT E.uname,sum([D.money]) AS  [money] 
    FROM (SELECT DISTINCT A.tid,A.uid,C.uname[money] FROM tbp  AS A LEFT JOIN tbt AS B ON A.tid = B.tid LEFT JOIN tpu AS C ON A.uid = C.uid) AS DLEFT JOIN tup AS E ON D.uid = E.uid
    GROUP BY uname试一下行不行
      

  9.   

    SELECT E.uname,sum([D.money]) AS  [money] 
    FROM (SELECT DISTINCT A.tid,A.uid,C.uname[money] FROM tbp  AS A LEFT JOIN tbt AS B ON A.tid = B.tid LEFT JOIN tpu AS C ON A.uid = C.uid) AS DLEFT JOIN tpu AS E ON D.uid = E.uid
    GROUP BY E.uname
    上一个错了不是tup 是 tpu
      

  10.   

    SELECT E.uname,sum(D.[money]) AS  [money]
    FROM (SELECT DISTINCT A.tid,A.uid,A.[money] FROM tbp  AS A 
    LEFT JOIN tbt AS B ON A.tid = B.tid 
    LEFT JOIN tpu AS C ON A.uid = C.uid) AS D
    LEFT JOIN tpu AS E ON D.uid = E.uid
    GROUP BY E.uname这一个是对的我测试过了,不知道有没有更简单的,高手指教啊!
      

  11.   

    随便写了一下,
    select sum(t.m) from (select distinct tid,money as m from tb1)t
      

  12.   

    SELECT E.uname,sum([D.money]) AS  [money] 
    FROM (SELECT DISTINCT A.tid,A.uid,C.uname[money] FROM tbp  AS A LEFT JOIN tbt AS B ON A.tid = B.tid LEFT JOIN tpu AS C ON A.uid = C.uid) AS DLEFT JOIN tup AS E ON D.uid = E.uid
    GROUP BY uname
      

  13.   

    select * from tb1 where pid in(select max(pid) from tb1 group by tid)
      

  14.   

    1):  delete  id  where id not in(select max(pid) from tb group by  pid)
    2):select  sum(money)  from  tb
    也可以把语句组合起来
      

  15.   

    1:delete  tb1  where pid not  in(select  max(pid) from tb1  group by  money)
    2:select  sum(money)  from tb1