"SQL Server 2008的联合查询、交叉表查询和动态列的使用示例" 在SQL Server 2008中,我们可以使用多种查询技术来处理复杂的数据检索任务。以下是一个示例,它展示了如何利用联合查询(UNION ALL)、交叉表查询(也称为PIVOT查询)以及动态列来实现特定的数据操作。 首先,这个示例开始声明三个变量:@sql、@ym 和 @heji。@sql 将用于构建最终的SQL查询语句,@ym 存储了日期'2014-04',而@heji 是一个分隔符,这里设置为“ϼ”。 接着,使用DECLARE语句创建了一个动态SQL字符串。在这个例子中,@sql首先被初始化为一个基础的SELECT语句,然后通过一个嵌套的SELECT语句来构建动态列。这涉及到对ReportData表中的buildNo进行遍历,为每个不同的buildNo创建一个新的列,并根据buildNo的值计算CheckInDay。使用CASE WHEN结构来判断buildNo是否匹配,如果不匹配,则返回0。 在构建完动态列后,添加了一个SUM函数来计算每个部门的总CheckInDay,并将结果存储在一个临时表#days中。然后,使用UNION ALL将结果与其他查询的结果合并,这使得可以同时显示原始数据和总计数据。 第二个部分的SQL语句是针对临时表#days的进一步操作。它创建了一个新的查询,这次没有按列显示,而是按行显示,即将部门的每日CheckInDay总和按部门名称和公司名称分组。这里,我们看到了动态列的再次应用,将buildNo作为行标识,用sum函数计算每个公司的总和。 最后,查询结果按照部门ID和公司编号排序,并删除临时表#days。使用EXEC语句执行整个动态SQL查询。 整个示例体现了SQL Server 2008的强大功能,包括动态SQL的构建,它可以适应不断变化的列需求;交叉表查询(虽然在这里未直接使用Pivot关键词,但其逻辑类似),它允许将行转换为列;以及UNION ALL,用于组合不同查询的结果。这些技术对于处理复杂的数据报表和数据分析任务非常有用。
declare @ym nvarchar(7)
declare @heji nvarchar(5)
set @heji = 'ºÏ¼Æ'
set @ym = '2014-04'
set @sql = 'select 1 comSeq, CompNo,deptID,CompName,DeptName,'
select @sql = @sql + '(case when buildNo =''' + cast(buildNo as nvarchar(50)) + ''' then CheckInDay else 0 end) [' + cast(buildNo as nvarchar(50)) + '],'
from (select distinct buildNo from ReportData) as a
--left(@sql,len(@sql)-1)
set @sql = @sql + 'sum(checkInDay) [deptTotal] into #days from ReportData where convert(varchar(7),optDate,120)= '''+@ym+''' group by DeptName,CompName,deptID,CompNo,buildNo,checkInDay'
+ ' order by deptID,CompNo select * from #days'
+ ' union all'
+ ' select 2 comSeq, dy1.CompNo,0 deptID,dy1.CompName,dy1.CompName+''' + @heji + ''' DeptName ,'
select @sql = @sql + 'sum(' + cast(buildNo as nvarchar(50)) + '),'
from (select distinct buildNo from ReportData) as b
--+'sum(areaNo),sum(testNotestNotestNote),'
set @sql= @sql+'sum(dy1.deptTotal)'
+ ' from #days dy1'
+ ' Group by dy1.CompNo,dy1.CompName'
+ ' Order by CompNo,comSeq'
+ ' drop table #days'
exec(@sql)
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展