1. 程式人生 > >一道SQL語句面試題,關於group by的

一道SQL語句面試題,關於group by的

一道SQL語句面試題,關於group by
表內容:
2015-05-09 勝
2015-05-09 勝
2015-05-09 負
2015-05-09 負
2015-05-10 勝
2015-05-10 負
2015-05-10 負

如果要生成下列結果, 該如何寫sql語句?

           勝 負
2015-05-09 2  2

2015-05-10 1  2

--建立表(表示建立一個臨時表#tmp,在過程結束,會把該表釋放掉,不會儲存到資料庫)
create table #tmp (
	rq varchar(10),
	shengfu nchar(1)
)
--插入資料
insert into #tmp values('2015-05-09','勝')
insert into #tmp values('2015-05-09','勝')
insert into #tmp values('2015-05-09','負')
insert into #tmp values('2015-05-09','負')
insert into #tmp values('2015-05-10','勝')
insert into #tmp values('2015-05-10','負')
insert into #tmp values('2015-05-10','負')

--查詢表中資料
select * from #tmp
--查詢需要得到的結果
select rq as ' ',SUM(case when shengfu='勝' then 1 else 0 end) '勝',SUM(case when shengfu='負' then 1 else 0 end) '負'
from #tmp 
group by rq

或者(但不是很推薦這樣寫)
select rq ,SUM(case shengfu when '勝' then 1 else 0 end) '勝',SUM(case shengfu when '負' then 1 else 0 end) '負'
from #tmp
group by rq