数据合并查询问题

waCtr 2012-12-13 10:01:30
表table1
ljbz bzName
101 A级
102 B级
103 C级
104 D级
表table2
id Dname bzName WT
1 部门A D级 是
2 部门B C级 是
3 部门C A级 否
需要统计 部门完成的级别次数 条件WT=是算1次
统计成

部门 所有部门 部门A 部门B 部门C
A级 B级 C级 D级 A级 B级 C级 D级 A级 B级 C级 D级 A级 B级 C级 D级

次数 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0

不知道是否表达清楚 这样好不好合并统计呢
...全文
114 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengnan2012 2012-12-14
  • 打赏
  • 举报
回复

DECLARE @t1 TABLE(ljbz INT ,bzName VARCHAR(10));
DECLARE @t2 TABLE(id int,Dname VARCHAR(10),bzname VARCHAR(10),wt VARCHAR(4));

INSERT INTO @t1 SELECT 101,'A级' UNION ALL 
SELECT 102,'B级' UNION ALL 
SELECT 103,'C级' UNION ALL 
SELECT 104,'D级';

INSERT INTO @t2 SELECT 1,'部门A','D级','是'
UNION ALL SELECT 2,'部门B','C级','是'
UNION ALL SELECT 3,'部门C','A级','否';


SELECT [部门A-A级] as [部门A-A级],[部门A-B级] as [部门A-B级],[部门A-C级] as [部门A-C级],[部门A-D级] as [部门A-D级],[部门B-A级] as [部门B-A级],[部门B-B级] as [部门B-B级],[部门B-C级] as [部门B-C级],[部门B-D级] as [部门B-D级],[部门C-A级] as [部门C-A级],[部门C-B级] as [部门C-B级],[部门C-C级] as [部门C-C级],[部门C-D级] as [部门C-D级] FROM (
	SELECT a.Dname+'-'+b.bzName AS NAME,CASE WHEN a.wt='是' AND a.bzname=b.bzName THEN 1 ELSE 0 END AS s FROM @t2 a FULL JOIN @t1 b ON 1=1 --ORDER BY a.Dname,b.bzname
) p PIVOT(SUM(s) FOR NAME IN ([部门A-A级],[部门A-B级],[部门A-C级],[部门A-D级],[部门B-A级],[部门B-B级],[部门B-C级],[部门B-D级],[部门C-A级],[部门C-B级],[部门C-C级],[部门C-D级])) pp

/*
建议用动态的
部门A-A级      部门A-B级      部门A-C级      部门A-D级      部门B-A级      部门B-B级      部门B-C级      部门B-D级      部门C-A级      部门C-B级      部门C-C级      部门C-D级
----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
0           0           0           1           0           0           1           0           0           0           0           0
*/



waCtr 2012-12-14
  • 打赏
  • 举报
回复
有能接近这种格式的 统计方式么
waCtr 2012-12-13
  • 打赏
  • 举报
回复
引用 1 楼 galenkeny 的回复:
统计是好统计,但是要完全得到你给出的格式,难~
怎么说呢 或者有别的方法吗? select Dname,bzName,SUM(case when WT='是' then 1 else 0 end)as '次数' from table2 group by Dname,bzName order by Dname 我这与 统计了 table2 这张表 结果是这样的 Dname bzName 次数 部门A D级 1 部门B C级 1
以学习为目的 2012-12-13
  • 打赏
  • 举报
回复
统计是好统计,但是要完全得到你给出的格式,难~

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧