select a.username,isnull(a.scoretype,b.scoretype)as scoretype,isnull(A.totalscore,0) from
(select username,scoretype,sum(myscore)as totalscore from table group by username,scoretype) A
full outer join 
(select scoretype from table group by scoretype) B
on a.scoretype=b.scoretype

解决方案 »

  1.   

    select username,SUM((case  when scoretype='A' then myscore else 0 end)) as 'A',SUM((case  when scoretype='B' then myscore else 0 end)) as 'B',SUM((case  when scoretype='C' then myscore else 0 end)) as 'C',SUM((case  when scoretype='D' then myscore else 0 end)) as 'D' from TT GROUP BY USERNAME
      

  2.   

    贴主声明:1.假设只要求查aa的得分统计。
              2.要求只扫描一遍数据表。
    我记得“按钮工厂”先生曾给我用过case语句帮我回答过类似问题。我很满意!
      

  3.   

    SELECT C.*, ISNULL(D.MYTOT,0) AS MYTOT FROM (SELECT A.*,B.* FROM (SELECT DISTINCT USERNAME FROM TT) A,(SELECT DISTINCT SCORETYPE FROM TT) B) C LEFT JOIN (SELECT USERNAME,SCORETYPE,SUM(MYSCORE) MYTOT FROM TT GROUP BY SCORETYPE,USERNAME) D ON C.USERNAME = D.USERNAME AND C.SCORETYPE= D.SCORETYPE
      

  4.   

    To  oldsky(老天爷): 错了,应该叫“按钮工厂” jj
      

  5.   

    2的解法
    select username,scoretype,sum(myscore)as totalscore from test2 group by username,scoretype
    order by username