日期:2014-05-17  浏览次数:20523 次

读取重复数据。
TYPE MONEY   CLASS
电费  100     支出
押金  100     收入
电费  50      支出
电话费 200    支出
押金  500     收入
押金  400     支出
烟    1000    收入
酒    200     收入
酒    100     收入

求得结果:

收入部分:
押金:600
烟    1000
酒    30
支出部分:
电费:150
电话费:200
押金:400
------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (TYPE nvarchar(6),MONEY int,CLASS nvarchar(4))
insert into [TB]
select '电费',100,'支出' union all
select '押金',100,'收入' union all
select '电费',50,'支出' union all
select '电话费',200,'支出' union all
select '押金',500,'收入' union all
select '押金',400,'支出' union all
select '烟',1000,'收入' union all
select '酒',200,'收入' union all
select '酒',100,'收入'

select * from [TB]

select CLASS,TYPE,sum(MONEY)  as money from TB group by CLASS,TYPE
ORDER BY CLASS,TYPE

/*
收入 酒 300
收入 押金 600
收入 烟 1000
支出 电费 150
支出 电话费 200
支出 押金 400*/

------解决方案--------------------
原来我贴错地方了,本来应该贴到group by,写到order by了
SELECT  CLASS ,
        CASE WHEN TYPE LIKE '%烟%' THEN '烟'
             WHEN TYPE LIKE '%酒%' THEN '酒'
             ELSE type
        END TYPE ,
        SUM(MONEY) MONEY
FROM    TB
GROUP BY CLASS ,
        CASE WHEN TYPE LIKE '%烟%' THEN '烟'
             WHEN TYPE LIKE '%酒%' THEN '酒'
             ELSE type
        END
ORDER BY CLASS ,
        type