我上此提到的ID         Money          Type
1          1000           定金款
2          200            CD款
3          800            相纸款
4          100            CD款
定金款 1000           CD款 300              相纸款 800如何用一条语句或最简单的方法实现上面的功能。谢谢您用select type,sum(money) from table group by type是能解决问题的,
但是假设我再加一个5      100     相纸定金  的话,那我要实现的相纸款就是相纸款+相纸定金,这个怎么做,如果还用上面的话是不行的,都是单列出来的。谢谢。

解决方案 »

  1.   

    select type=case when type='相纸定金' then '相纸款' end,sum(money) from table group by type
      

  2.   

    哎,不是很科学,相纸定金和相纸款,为什么相加?SQL没有那么聪明的.
    除非你硬套一个"规则"上去,比如开头2个字都是"相纸"...
      

  3.   


    --前提你的所有款的名称都是2个字.若出现'abc款'和'abc定金'则最后得到'ab款'
    select left(type,2)+'款',sum(money) from table group by left(type,2)
      

  4.   

    居然楼上的楼上都说了....
    --插入中间表
    select * into # from table
    --更新字段统一起来
    update table set type=stuff(type,len(type)-1,2,'款')
    where type like '%定金'
    --从中间表查找
    select type,sum(money) from # group by type
      

  5.   

    我的想法。在数据库中增加一张类型转换表,表名“XType”,字段两个,内容如下:
    FromType    ToType 
    定金款    定金款
    CD款    CD款
    相纸款    相纸款
    相纸定金    相纸款SQL语句如下:
    SELECT SUM(T.Money) AS Money,X.ToType AS Type FROM [Table] T JOIN XType X ON T.Type=X.FromType GROUP BY X.ToType 
    解释:先联接转换表,获得统一的“类型”值,再分组。如果还有其它需要统一的“类型”值,只需维护转换表即可。