一个恐怖的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]