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

一个恐怖的SQL语句,头大了,向

2012-03-15 
一个恐怖的SQL语句,头大了,向各位高手求助有这样一个表段namepaypay_yes_nohuang2000结算yang5000未结算li

一个恐怖的SQL语句,头大了,向各位高手求助
有这样一个表段
name pay pay_yes_no  
huang 2000 结算
yang 5000 未结算
li 1200 未结算 
huang 3000 未结算
huang 4000 结算

我想输出的结果在一个表里实现:
name pay pay_yes_no(输出结算的数目)
huang 9000 6000
yang 2000 0(或者空)
li 1200 0(或者空)

 

[解决办法]

--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
go
create table [TB]([name] varchar(5),[pay] int,[pay_yes_no] varchar(6))
insert [TB]
select 'huang',2000,'结算' union all
select 'yang',5000,'未结算' union all
select 'li',1200,'未结算' union all
select 'huang',3000,'未结算' union all
select 'huang',4000,'结算'

select 
[name],
pay=SUM([pay]),
pay_yes_no=SUM(case when [pay_yes_no]='结算' then [pay] else 0 end)
from [TB]
group by [name]

/*
name pay pay_yes_no
----- ----------- -----------
huang 9000 6000
li 1200 0
yang 5000 0

(3 行受影响)


*/
drop table [TB]

热点排行