1、表
2005-05-09 勝
2005-05-09 勝
2005-05-09 負
2005-05-09 負
2005-05-10 勝
2005-05-10 負
2005-05-10 負
如果要生成下列結果, 該如何寫sql語句?
勝 負2005-05-09 2 2
2005-05-10 1 2
create table #tmp(rq varchar(10),shengfu nchar(1))
insert into #tmp values('2005-05-09','勝')
insert into #tmp values('2005-05-09','勝')
insert into #tmp values('2005-05-09','負')
insert into #tmp values('2005-05-09','負')
insert into #tmp values('2005-05-10','勝')
insert into #tmp values('2005-05-10','負')
insert into #tmp values('2005-05-10','負')
分析:其實可以先寫這樣的sql語句:
select rq, ( case when shengfu = '勝' then 1 else 0 end)勝,
( case when shengfu ='負' then 1 else 0 end)負
from temp
產生如下的結果:
rq 勝 負
2005-05-09 1 0
2005-05-09 1 0
2005-05-09 0 1
2005-05-09 0 1
2005-05-10 1 0
2005-05-10 0 1
2005-05-10 0 1
然後就group一下就行了!
比較好的寫法是:
select
rq, sum(case when shengfu='勝' then 1 else 0 end)'勝',sum(case when shengfu='負' then 1 else 0 end)'負' from #tmp group by rq
另一種思路:
select a.rq,a.勝,b.負 from
(select rq, count(sf) 勝 from temp where sf='勝' group by rq )a
inner join
(select rq, count (sf) 負 from temp where sf='負' group by rq) b
on a.rq=b.rq
2、請用乙個sql語句得出結果
從table1,table2中取出如table3所列格式資料,注意提供的資料及結果不準確,只是作為乙個格式向大家請教。
如使用儲存過程也可以。
table1
月份mon 部門dep 業績yj
-------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8
table2
部門dep 部門名稱dname
--------------------------------
01 國內業務一部
02 國內業務二部
03 國內業務三部
04 國際業務部
table3 (result)
部門dep 一月份 二月份 三月份
--------------------------------------
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9
------------------------------------------
思路:這個題實際上只需用到table1 而且table3的答案有點問題
select dep,sum(case when mon='一月份' then yj else 0 end)一月份,
sum(case when mon='二月份' then yj else 0 end)二月份,
sum(case when mon='三月份' then yj else 0 end)三月份
from table1 group by dep order by dep)a ;
結果是:
部門dep 一月份 二月份 三月份
--------------------------------------
01 10 0 0
02 10 8 0
03 5 8 0
04 0 9 0
------------------------------------------
然後就把0轉為null就行了,其實一開始還是用0來算 這樣group就方便了
資料庫一些記錄
資料庫三大正規化 第一正規化 1nf 資料表中的每一列 每個字段 必須是不可拆分的最小單元,也就是確保每一列的原子性。解釋 每一列屬性都是不可再分的屬性值,確保每一列的原子性,如果兩列的屬性相近或相似或一樣,盡量合併屬性一樣的列,確保不產生冗餘資料。第二正規化 2nf 滿足1nf後,要求表中的所有列...
資料庫的一些複習
1.關係資料模型的資料結構,在使用者的觀點下,關係模型中資料的結構就是一張二維表,它由行和列組成 關係必須是規範化的,滿足一定的規範條件 1 最基本的規範條件 關係的每乙個分量必須是乙個不可分割的資料項,不允許表中還有表 2.關係模型的操作和完整性約束 資料操作是集合操作,操作物件和操作結構都是關係...
一些資料庫的操作
建立乙個資料庫 create database database name 刪除乙個資料庫 drop database database name 顯示資料庫 show databases 進入某個資料庫 use database name 建立乙個資料表 create table database...