`

SQLServer2005中使用Pivot,进行行列转换遇到的问题

    博客分类:
  • SQL
阅读更多

1.创建表脚本

 

if exists (select 1

            from  sysobjects

           where  id = object_id('Insurances')

            and   type = 'U')

   drop table Insurances

go

 

/*==============================================================*/

/* Table: Insurances                                            */

/*==============================================================*/

create table Insurances (

   RefID                uniqueidentifier     not null,

   HRMS                 nvarchar(20)         null,

   Name                 nvarchar(20)         null,

   InsuranceMoney       money                null,

   InsuranceName        nvarchar(100)        not null,

   constraint PK_INSURANCES primary key (RefID)

)

go

 

 

2.测试数据脚本

 

insert into Insurances values (newid(),1,'张三',200,'养老保险')

insert into Insurances values (newid(),1,'张三',300,'医疗保险')

insert into Insurances values (newid(),2,'李四',250,'养老保险')

insert into Insurances values (newid(),2,'李四',350,'医疗保险')

insert into Insurances values (newid(),3,'王二',150,'养老保险')

insert into Insurances values (newid(),3,'王二',300,'医疗保险')

 

3.查询表数据

 

select HRMS,Name,InsuranceMoney,InsuranceName From Insurances

 

HRMS                 Name                 InsuranceMoney        InsuranceName

-------------------- -------------------- --------------------- ----------

1                    张三                  200.00                养老保险

2                    李四                  350.00                医疗保险

2                    李四                  250.00                养老保险

1                    张三                  300.00                医疗保险

3                    王二                  300.00                医疗保险

3                    王二                  150.00                养老保险

 

4.转置表数据

 

select * from

(

select HRMS,Name,InsuranceMoney,InsuranceName from Insurances

) p

Pivot (

sum(InsuranceMoney)

FOR InsuranceName IN

( [医疗保险], [养老保险]))

as pvt

 

 

HRMS                 Name                 医疗保险                 养老保险

-------------------- -------------------- --------------------- ---------------------

2                    李四                  350.00                250.00

3                    王二                  300.00                150.00

1                    张三                  300.00                200.00

 

声明:以上测试数据来自互联网,重点强调下面提示错误的解决办法

http://www.cnblogs.com/icebutterfly/archive/2009/08/07/1541322.html

 

执行4中的语句会出现错误提示

   'Pivot' 附近有语法错误。您可能需要将当前数据库的兼容级别设置为更高的值,以启用此功能。有关存储过程 sp_dbcmptlevel 的信息,请参见帮助。

解决办法

   需要将当前数据库的兼容级别设置为更高的值,默认80,设置为90即可

 

EXEC sp_dbcmptlevel '数据库名', 90

 

查看当前数据库的兼容级别:右击当前数据库---->属性---->选项

分享到:
评论

相关推荐

    SQL Server 2005新功能之PIVOT的描述

    在SQL Server 2005中使用PIVOT,基本语法结构如下: ```sql SELECT ... FROM table_name PIVOT ( aggregate_function(column_to_aggregate) FOR column_to_pivot IN (list_of_pivot_values) ) AS pivot_table; ``...

    SQL 2008行列转换的pivot

    ### SQL 2008 行列转换 (Pivot) 的动态实现 #### 知识点一:行列转换(Pivot)的概念与应用场景 在数据库查询中,有时我们需要将数据表中的行转换为列,或者将列转换为行,这种操作被称为行列转换。行列转换在报表...

    sql server 行列转换

    通过上述示例可以看出,使用动态SQL可以有效地实现SQL Server中的行列转换。虽然这种方法具有一定的灵活性和适用性,但在实际应用中还需要考虑其潜在的安全性和维护性问题。在实际开发过程中,应根据具体需求和场景...

    sql server通过pivot对数据进行行列转换的方法

    本篇将详细讲解如何使用Pivot功能对数据进行行列转换,并通过实例代码展示其具体用法。 首先,我们需要理解Pivot的基本概念。在SQL Server中,Pivot操作是Transact-SQL的一个特性,它允许我们将一个表中的值从行...

    SQL SERVER 2005+ 版本行列转换数据脚本

    该脚本是在SQL Server 2005及以上版本中使用的。下面将对这个数据表的结构进行详细的分析。 1. **表结构**: - `id`: 整型(`int`),自动增长(`IDENTITY(1,1)`),不允许为空(`NOT NULL`),主键(`PRIMARY KEY...

    SQL行列转换 Pivot UnPivot

    Pivot 和 UnPivot 是 SQL Server 2005 中引入的两个语法,用于实现行列转换。 Pivot Pivot 语法的主要作用是将列值旋转为列名,即行转列。其基本语法为: ``` SELECT * FROM table_source PIVOT (聚合函数(value_...

    Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询.part1

    透视查询(PIVOT)和行列转换也是重要的内容,它们能够将数据从行转换为列或反之,以满足特定的报表需求。 窗口函数(Window Functions)是SQL Server 2005中的一个重要特性,它们允许我们在每个结果行上执行计算,...

    SQL2005查询工具 SQLServer2005_SSMSEE

    描述中提到的"简单安装SQL软件可以下载使用",意味着SQL Server 2005 SSMSEE的安装过程相对简单,用户只需下载`SQLServer2005_SSMSEE.msi`这个安装文件,按照向导指示即可完成安装。安装后,用户无需复杂的配置就能...

    SQLServer行列互转实现思路(聚合函数)

    在SQL Server中,行列互转是一种常见的数据处理需求,它能帮助我们以更直观的方式展示数据。本篇文章将深入探讨如何使用聚合函数Pivot和Unpivot来实现这一目标,特别是针对SQL Server数据库。 首先,让我们了解什么...

    SQL Server 关于Pivot详解

    在本文中,我们将详细介绍 SQL Server 中的 Pivot 语句,并结合实例分析和实验题目,帮助读者快速掌握其使用。 Pivot 语法 Pivot 语句的基本语法如下: ``` SELECT <非透视的列>, [第一个透视的列] AS <列名称>...

    SQL Server 2005 Beta 2 Transact-SQL 增强功能

    SQL Server 2005 Beta 2带来了对Transact-SQL的显著增强,这些改进主要集中在提升查询表达能力、数据完整性(DRI)支持、性能优化以及错误处理方面。以下是对这些增强功能的详细说明: 1. **排序函数**: SQL ...

    [sql server]SQL Server2005杂谈(5):将聚合记录集逆时针和顺时针旋转90度.doc

    在SQL Server 2005中,处理数据时有时需要对聚合记录集进行行列转换,以便更好地展示统计结果。本文主要讨论了如何将聚合记录集逆时针和顺时针旋转90度,这是数据分析和报表制作中常见的需求。 首先,我们看一个...

    SQL Server 2005两个十个最重要的特点

    SQL Server 2005 与 Visual Studio 2005 紧密集成,使得开发人员能够在一个统一的环境中进行数据库设计、测试和部署。这种集成简化了开发流程,并提高了开发效率。 ### 15. 丰富的应用程序接口 SQL Server 2005 ...

    深入探讨SQL Server 2008 R2 -PowerPivot

    在 SharePoint 场中,PowerPivot for SharePoint 添加了服务器端应用程序和功能,支持对您发布PowerPivot指的是一组应用程序和服务,它们为使用Excel和SharePoint来创建和共享商业智能提供了端到端的解决方案。...

    sqlserver2005 行列转换实现方法

    在SQL Server 2005中,行与列之间的转换是一种常见的数据操作需求,尤其是在数据分析、报表生成或数据展示时。以下将详细讲解如何在SQL Server 2005中实现这种转换。 首先,我们来看两个示例表格:`Company` 和 `...

    Sql Server 2005 行转列的实现 (横排)

    在SQL Server 2005中,我们经常遇到这样的需求:需要将数据库中的多行数据转换为多列显示,这通常被称为“行转列”或“行列互换”。这种操作在数据分析、报表制作或者简化数据显示时非常有用。本文将详细讲解如何在...

    SQL Server 2005 T-SQL增强

    以前版本的SQL Server使用的是基于消息的错误处理机制,而在2005版中,引入了更加强大的TRY...CATCH结构,使得开发人员可以更加精细地控制错误捕获和处理过程。 - **TRY块**: 在TRY块内执行的代码可能会抛出异常。 ...

Global site tag (gtag.js) - Google Analytics