ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > SQL in Excel > 用SQL语句根据企业简称创建数据透视表

用SQL语句根据企业简称创建数据透视表

作者:绿色风 分类: 时间:2022-08-18 浏览:211
楼主
水星钓鱼
如下图所示

 
为某公司2010-2011两年的月售额记录,现在需要根据企业简称,用SQL语句创建数据透视表,如所示。

 
要求:
1.不允许修改数据源,不允许使用辅助列
2.在数据量大的情况下SQL语句运行速度不能太慢
3.答对加3个技能分,优秀答案加5个技能分
4.第一个答对的版主加3个技能分,后续答对的版主不加分

5.题目说明:“结果”图展示的是“企业简称”工作表中的3家企业2010-2011两年的销售额 (即12个月的销售额),用SQL语句创建的数据透视表不能再进行组合、编辑字段项目等操作,企业名称无规律。
6.如果数据源有变更,包括增加、减少,SQL语句要不能修改也可以实现类似效果。附件如下:

SQL.rar

提交答案需提交附件,不能仅提交SQL语句。
特别提醒:企业简称中的企业数并不是固定的,这里只是一个举例,有可能3家也有可能5家,SQL语句必须要有通用性。
2楼
peakchu
死办法套的,不知道可对,等答案中
SQL.rar
3楼
嘉昆2011
附件效果:

SQL.rar
4楼
peakchu
又敏思苦想了几天,再发一次,继续等答案
SQL.rar
5楼
LOGO
  1. SELECT 企业,年,销售额 FROM (SELECT [企业\月份],[1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月] as 销售额,2010 as 年 from [2010$]
  2. union all
  3. SELECT [企业\月份],[1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月] as 销售额,2011 as 年 from [2011$]) a,[企业简称$] b
  4. where instr(A.[企业\月份],B.企业)<>0

SQL-LOGO.zip
6楼
zbhpass
SQL.rar
7楼
taow
select 企业,年,销售额 from (select SWITCH([企业\月份] like "%A%","A",[企业\月份] like "%B%","B",[企业\月份] like "%C%","C") as 企业,"2010" as 年,[1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月] as 销售额 from [2010$]
union all
select SWITCH([企业\月份] like "%A%","A",[企业\月份] like "%B%","B",[企业\月份] like "%C%","C") as 企业,"2011" as 年,[1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月]+[12月] as 销售额 from [2011$])
where 企业 is not null
SQL.rar
8楼
水星钓鱼
大概的思路是这样的
  1. select 年,(select b.企业 from [要统计的企业简称$] b where instr(a.委托单位,b.企业)<14 and instr(a.委托单位,b.企业)>0)  as 委托单位,检验费 from (select [委托单位\月份] as 委托单位,[1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月] as 检验费,'2011' as 年 from [2011$]  union all  select [委托单位\月份] as 委托单位,[1月]+[2月]+[3月]+[4月]+[5月]+[6月]+[7月]+[8月]+[9月]+[10月]+[11月] as 检验费,'2012' as 年 from [2012$]) a where exists (select b.企业 from [要统计的企业简称$] b where instr(a.委托单位,b.企业))
在SELECT子句中运用子查询,instr,exists的用法。具体的答案按照以上SQL语句的思路去套。
9楼
像狸一样坚定
  1. select a.总计,a.年,b.企业 from (select `企业\月份`,`1月`+`2月`+`3月`+`4月`+`5月`+`6月`+`7月`+`8月`+`9月`+`10月`+`11月`+`12月` as 总计,'2010' as 年  from [2010$] union all select `企业\月份`,`1月`+`2月`+`3月`+`4月`+`5月`+`6月`+`7月`+`8月`+`9月`+`10月`+`11月`+`12月` as 总计,'2011' as 年 from [2011$])a,[企业简称$]b where instr(a.`企业\月份`,b.企业)

简称的做法.zip
10楼
葵花籽yi
学习学习~~

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap