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 …
同一个月份的数据累加到一起。
再给个微软官方的例子:
分享到:
相关推荐
最后,当不使用PIVOT函数时,可以通过CASE WHEN语句来实现行转列。这种方式适用于列名相对固定且数量不多的情况。每个CASE WHEN语句对应一个列,当`ScoreName`匹配时返回`Score`值,否则返回0。代码如下: ```sql ...
除了Pivot,还可以使用CASE语句结合GROUP BY来实现行转列。CASE语句可以用来根据条件返回不同的值,非常适合处理分类数据。以下是一个基本示例: ```sql SELECT column1, SUM(CASE WHEN condition1 THEN value END...
在SQL Server 2000中,当需要将表格数据从多行展示为单行,即将行转换为列时,可以使用动态SQL来实现。这种技术通常被称为“行转列”或“行列转换”。在本例中,我们将讨论如何通过案例来理解这个过程。 首先,我们...
SQL Server中,我们经常会遇到两种不同的表格形式:纵表(Tall Table)和横表(Wide Table)。这两种表格形式各有其特点,适用于不同的场景。本文将详细介绍如何在SQL Server中进行纵表与横表的相互转换,并提供具体...
这将涉及`INFORMATION_SCHEMA.COLUMNS`视图来获取列信息,并使用`sp_executesql`(在SQL Server中)或`EXEC`(在MySQL中)来执行动态SQL。 例如,这是一个基本的存储过程示例,用于获取`t001`表的列并将其横向显示...
横排通常用于展示数据的不同列,而竖排则用于展示数据的多个行。源码示例将展示如何根据需求切换这两种模式,以适应不同的用户界面设计和数据展示需求。 在源码中,开发者可能使用了易语言的内置函数和方法来操控...
在ASP(Active Server Pages)中实现数据的横向显示,通常需要通过HTML表格元素(tr和td)来构建一个表格布局。这个过程主要涉及到从数据库中检索数据,然后按照要求的格式在网页上展示。下面将详细解释上述代码中...
显示商品信息通常涉及到从数据库查询商品数据,这可能通过SQL语句实现。在Servlet中,我们可以创建一个Statement或PreparedStatement对象,执行查询语句,然后将结果集转换为Java对象(如自定义的`Product`类)。...
- 硬盘应按照横排顺序插入,以便于管理和维护。 - 级联线用于连接控制器,确保控制器之间的通信。 2. **网络设置**: - 笔记本电脑或管理设备需配置IP地址为192.168.128.100,子网掩码255.0.0.0,以便与DS3400...
- **第三步:** 在弹出的对话框中选择“数据库类型”,根据实际使用的数据库类型(如Access或SQL Server)进行选择。 - **第四步:** 在“ODBC数据源”选项中,选择“新”来创建一个新的数据源。 - **第五步:** ...