`
isiqi
  • 浏览: 16539179 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

SQL Server 行转列的实现(横排)

阅读更多

SQL Server 2000

在一些统计报表中,常常会用到将行结果用列形式展现。我们这里用一个常见的学生各门课程的成绩报表,来实际展示实现方法。

我们用到的表结构如下:

三张表的关系为:

现有的测试数据为:

我们需要的结果是:

SQL语句如下:

SQL SERVER 2005 中,已经有实现此功能的内置方法了。

SQL SERVER 2005中新增加了两个关系运算符 PIVOT/ UNPIVOT,能够实现表中的列转换到行,以及行到列的转换工作。
举例,还是先创建测试数据表 :

我们想要得到类似这样的结果:

Year Jan Feb Mar …………..

—– ———- ———– ———–

2004 789.0000 389.0000 8867.0000 ………….

2005 7.0000 6868.0000 688.0000 …………..

用上面介绍的方法当然可以实现,但现在这里想要的列是固定的,不是动态的,就是12个月,所以也可以这样子来用:

但这样事实上还是相当麻烦的,现在SQLSERVER2005中有更方便的实现方法。

就是这样,很简单的用法,效果是完全一样的。

我们再尝试一下把year去掉:

得到的结果是:

Jan Feb Mar …

———- ———— ———–

796.0000 7257.0000 9555.0000 …


同一个月份的数据累加到一起。


再给个微软官方的例子:

分享到:
评论

相关推荐

    SQLServer行转列实现思路记录

    最后,当不使用PIVOT函数时,可以通过CASE WHEN语句来实现行转列。这种方式适用于列名相对固定且数量不多的情况。每个CASE WHEN语句对应一个列,当`ScoreName`匹配时返回`Score`值,否则返回0。代码如下: ```sql ...

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

    除了Pivot,还可以使用CASE语句结合GROUP BY来实现行转列。CASE语句可以用来根据条件返回不同的值,非常适合处理分类数据。以下是一个基本示例: ```sql SELECT column1, SUM(CASE WHEN condition1 THEN value END...

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

    在SQL Server 2000中,当需要将表格数据从多行展示为单行,即将行转换为列时,可以使用动态SQL来实现。这种技术通常被称为“行转列”或“行列转换”。在本例中,我们将讨论如何通过案例来理解这个过程。 首先,我们...

    SQL Server纵表与横表相互转换的方法

    SQL Server中,我们经常会遇到两种不同的表格形式:纵表(Tall Table)和横表(Wide Table)。这两种表格形式各有其特点,适用于不同的场景。本文将详细介绍如何在SQL Server中进行纵表与横表的相互转换,并提供具体...

    SQL创建存储过程[横向显示列的数据]

    这将涉及`INFORMATION_SCHEMA.COLUMNS`视图来获取列信息,并使用`sp_executesql`(在SQL Server中)或`EXEC`(在MySQL中)来执行动态SQL。 例如,这是一个基本的存储过程示例,用于获取`t001`表的列并将其横向显示...

    易语言 超级列表框 横排 and 竖排+数据库例子 源码

    横排通常用于展示数据的不同列,而竖排则用于展示数据的多个行。源码示例将展示如何根据需求切换这两种模式,以适应不同的用户界面设计和数据展示需求。 在源码中,开发者可能使用了易语言的内置函数和方法来操控...

    asp 横排显示数据

    在ASP(Active Server Pages)中实现数据的横向显示,通常需要通过HTML表格元素(tr和td)来构建一个表格布局。这个过程主要涉及到从数据库中检索数据,然后按照要求的格式在网页上展示。下面将详细解释上述代码中...

    显示商品信息

    显示商品信息通常涉及到从数据库查询商品数据,这可能通过SQL语句实现。在Servlet中,我们可以创建一个Statement或PreparedStatement对象,执行查询语句,然后将结果集转换为Java对象(如自定义的`Product`类)。...

    IBM-DS3400双机配置文档(图例教程)IBM-DS3400双机配置文档(图例教程)

    - 硬盘应按照横排顺序插入,以便于管理和维护。 - 级联线用于连接控制器,确保控制器之间的通信。 2. **网络设置**: - 笔记本电脑或管理设备需配置IP地址为192.168.128.100,子网掩码255.0.0.0,以便与DS3400...

    intouch历史报警配置.pdf

    - **第三步:** 在弹出的对话框中选择“数据库类型”,根据实际使用的数据库类型(如Access或SQL Server)进行选择。 - **第四步:** 在“ODBC数据源”选项中,选择“新”来创建一个新的数据源。 - **第五步:** ...

Global site tag (gtag.js) - Google Analytics