Re: [SQL ] 兩個資料表要產出數字 (count)
declare @t table(declare_no char(2),declare_name nvarchar(4))
insert @t values('01','定期申報')
insert @t values('02','就職申報')
insert @t values('03','補正申報')
insert @t values('04','動態申報')
insert @t values('05','信託申報')
declare @t2 table(name nchar(2),type varchar(2))
insert @t2 values('某甲','02')
insert @t2 values('某甲','03')
insert @t2 values('某乙','05')
insert @t2 values('某乙','03')
insert @t2 values('某丙','04')
insert @t2 values('某丁','05')
insert @t2 values('路人','01')
insert @t2 values('男人','02')
insert @t2 values('女人','02')
--select * from @t
--select * from @t2
SELECT *
FROM @t2
left join @t on type=declare_no
select *,
case declare_name when '定期申報' then 1 else 0 end[定期申報],
case declare_name when '就職申報' then 1 else 0 end[就職申報],
case declare_name when '補正申報' then 1 else 0 end[補正申報],
case declare_name when '動態申報' then 1 else 0 end[動態申報],
case declare_name when '信託申報' then 1 else 0 end[信託申報]
FROM @t2
left join @t on type=declare_no
select
sum(case declare_name when '定期申報' then 1 else 0 end)[定期申報],
sum(case declare_name when '就職申報' then 1 else 0 end)[就職申報],
sum(case declare_name when '補正申報' then 1 else 0 end)[補正申報],
sum(case declare_name when '動態申報' then 1 else 0 end)[動態申報],
sum(case declare_name when '信託申報' then 1 else 0 end)[信託申報]
FROM @t2
left join @t on type=declare_no
/*
寫法想精簡一點可以查 pivot用法
我實驗的結果是效率沒比較好,也沒比較好讀…
*/
※ 引述《roga (凝視)》之銘言:
: 各位板友大家好,小弟想請教一個 SQL 的問題
: Delares 資料表
: ________________________
: declare_no declare_name
: 01 定期申報
: 02 就職申報
: 03 補正申報
: 04 動態申報
: 05 信託申報
: Members 資料表
: ________________________
: name type
: 某甲 02
: 某甲 03
: 某乙 05
: 某乙 03
: 某丙 04
: 某丁 05
: 路人 01
: 男人 02
: 女人 02
: 我想產生一張申報狀況的資料表,長得這樣:
: 定期申報 就職申報 補正申報 動態申報 信託申報
: ______________________________________________________
: 人數 人數 人數 人數 人數
: 請問有好的作法嗎?
: 現在的句子是
: SELECT
: d.declare_no, d.declare_name, count(type) AS result
: FROM Members, Declares d
: WHERE type = d.declare_no
: GROUP BY d.declare_no, d.declare_name
: 但是產出的是
: declare_no declare_name result
: 01 定期申報 1
: 02 就職申報 3
: 03 補正申報 2
: 04 動態申報 1
: 05 信託申報 2
: 但是這樣不太符合需求,希望對 SQL 熟悉的人可個忙
: 謝謝!我的資料庫是 SQL 2005 ,謝謝 ^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.172.157
※ 編輯: grence 來自: 210.61.172.157 (12/05 15:57)
推
12/05 17:41, , 1F
12/05 17:41, 1F
推
12/05 20:59, , 2F
12/05 20:59, 2F
討論串 (同標題文章)