作者sai25 (hyde)
看板Database
标题Re: [SQL ] 两个资料表要产出数字 (count)
时间Wed Jun 10 17:49:02 2009
请问一下PIVOT用法
select * from (select B.declare_name,count(A.type) 人数 from @t2 A,@t B
where A.type = B.declare_no group by B.declare_name,B.declare_no ) as x pivot
(sum(人数) for declare_name in
([定期申报],[就职申报],[补正申报],[动态申报],[信托申报])) AS PVT
以上栏位都要把[XXXX]打出来吗?
有没有办法不用打出栏位 [定期申报],[就职申报],[补正申报],[动态申报],[信托申报]
※ 引述《grence (多想两分钟 = =")》之铭言:
: 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: 203.64.158.44