首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

读取反复数据

2013-01-05 
读取重复数据。TYPE MONEYCLASS电费100支出押金100收入电费50支出电话费 200支出押金500收入押金400支出烟1

读取重复数据。
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

热点排行