`
zhuyx808
  • 浏览: 122975 次
  • 性别: Icon_minigender_1
  • 来自: 快来看~天上米有灰机
社区版块
存档分类
最新评论

多个列转换为行记录

 
阅读更多

前两天的存储过程果真可以优化很多,原来是用到这个东东哦~~~~

 

/*--
 下面的示例中,按照列Groups分组,统计不同的Item、Color的Quantity合计数据
 并且将列Item和Color的统计结果水平显示。
--*/


DECLARE @t TABLE(Groups char(2),Item varchar(10),Color varchar(10),Quantity int)
INSERT @t SELECT 'aa','Table','Blue', 124
UNION ALL SELECT 'bb','Table','Red',  -23
UNION ALL SELECT 'bb','Cup'  ,'Green',-23
UNION ALL SELECT 'aa','Chair','Blue', 101
UNION ALL SELECT 'aa','Chair','Red',  -90




--查询处理
SELECT Groups,
 [Table]=SUM(CASE Item WHEN 'Table' THEN Quantity END),
 [Cup]=SUM(CASE Item WHEN 'Cup' THEN Quantity END),
 [Chair]=SUM(CASE Item WHEN 'Chair' THEN Quantity END),
 [Blue]=SUM(CASE Color WHEN 'Blue' THEN Quantity END),
 [Red]=SUM(CASE Color WHEN 'Red' THEN Quantity END),
 [Green]=SUM(CASE Color WHEN 'Green' THEN Quantity END)
FROM @t
GROUP BY Groups
/*--结果
Groups Table       Cup       Chair        Blue       Red       Green
--------- --------------- ---------------- ----------------- --------------- ---------------- ---------------
aa     124       NULL      11          225        -90         NULL
bb     -23       -23         NULL      NULL      -23         -23
--*/















分享到:
评论

相关推荐

    一列保存多个ID(将多个用逗号隔开的ID转换成用逗号隔开的名称)

    通过以上步骤,我们就能得到每个员工对应的逗号分隔的部门名称,从而满足了从列中多个逗号分隔的ID转换为部门名称的需求。然而,这种方法虽然实用,但并不理想,因为它不支持数据库的优化,且随着数据量的增长,性能...

    sql利用union all行转列

    其中,“行转列”(Pivot)是一种常见的数据转换方式,它能够将数据表中的某列或多列值转换为多列的形式展现,从而方便进一步的数据分析与展示。本文主要介绍一种利用SQL语句中的`UNION ALL`来实现“行转列”的方法...

    sql 行专列 列转行 普通行列转换

    列转行是将多列的数据转换为单列,并增加一个标识列来区分原列信息。这通常可以通过`UNPIVOT`操作或者使用`UNION ALL`来实现。例如,如果我们有一个人口统计表,包含不同年龄段的人口数量,现在想要将这些数据合并成...

    mysql-行转列、列转行

    当我们处理数据时,有时需要将行转换为列或者将列转换为行,这在数据分析和报表展示中尤为常见。这种操作在SQL中通常被称为“透视”或“行列转换”。 标题“mysql-行转列、列转行”涉及到的是MySQL中的两种主要转换...

    sql列转行以及行转列的通用存储过程

    这通常涉及到如何将数据表中的某一列或几列的数据转化为多个行记录的过程。 ### 部分内容解析 这部分内容提供了存储过程`SP_RowChangeCol`的部分代码实现,下面将对这些代码进行详细解释: 1. **参数定义**: - ...

    VB.NET源码 -一行多列转一列多行数据.txt

    这段代码首先定义了一个模拟原始数据的列表,然后通过`Split()`函数将每条记录拆分成多个部分,取出固定的部分(ID和Name),并将剩余的技能部分拆分成单独的项,添加到新的列表中。最后,它会打印出转换后的数据。 ...

    列变成行存储过程将列变成行的存储过程

    标题中的“列变成行存储过程”是指在数据库中,通过特定的编程手段将原本存储为列的数据转换成行的形式展示或处理。这种操作通常在数据处理时非常有用,特别是当需要将多列数据合并成一列,或者进行复杂的报表生成时...

    列转行小工具

    比如,一个员工信息表中,有多个技能列(如“编程”、“设计”等),如果要将这些技能列展开为行记录,以便查看每个员工具备哪些技能,就可以使用UNPIVOT。 在Oracle Developer中,可能提供了图形化的界面来辅助...

    gp 行转列测试数据

    通过这个函数,可以将原始的行数据转换为列数据。 然而,对于某些特定的需求或复杂的数据结构,可能需要编写自定义函数来实现行转列。自定义函数通常使用PL/pgSQL或其他支持的编程语言(如Python或Perl)编写,它们...

    SQL 通过行动态生成列

    然而,在某些场景下,如报表展示,我们可能需要将某一列的多个值转换为多列显示,这通常涉及到聚合函数和PIVOT操作。 1. **聚合函数与CASE语句**:在SQL中,可以使用GROUP BY结合聚合函数(如SUM, AVG, COUNT等)...

    oracle某个字段多行记录转化为一行

    根据提供的信息,本文将详细介绍如何在Oracle数据库中将某个字段的多行记录转换为一行记录的方法。这种方法在处理大量数据时非常有用,特别是在需要将多个值汇总到一个字段中的场景下。 ### 标题理解:“oracle某个...

    ORACLE 行列转换

    通过上述方法,我们可以有效地在Oracle数据库中实现行列转换,无论是将多行数据转换为单行的多个列,还是将单行的多个列转换为多行数据。这不仅有助于数据分析和报告的生成,也提高了数据的可读性和可用性。

    批量读取栅格文件并转换为文本

    将栅格数据转换为文本格式,意味着每个像素的值会被写入到一个或多个文本文档中。这可能是一个简单的CSV文件,其中包含坐标信息和对应的像素值,或者是一个更复杂的格式,如XML,提供更丰富的元数据支持。 5. **...

    行列转换

    `pivot`用于将索引和列转换为列值,而`melt`则用于将列名转换为行。 接下来,"工具"标签可能暗示了我们可以使用各种软件工具来完成这个任务。比如Excel提供了“转置”功能,可以快速地交换行和列。在SQL中,我们...

    一个TXT转换为DB和MDB数据库的例子(Delphi)

    在读取每一行后,我们需要根据分隔符将数据分割成多个字段。Delphi提供了SplitString函数或者使用正则表达式进行更复杂的数据拆分。 3. **转换为DB(dBase)格式**: dBase(.DB)是一种老式的数据库格式,通常...

    sqlserver下将数据库记录的列记录转换成行记录的方法

    在SQL Server中,有时我们需要将存储在表格中的列记录转换为行记录,这一操作被称为“行列转换”或“PIVOT”操作。这种转换在处理数据汇总或展示时非常有用,例如将每个学生的各科成绩从多行显示转换为一行显示。在...

    SqlServer行转列

    在数据库操作中,行转列(Pivot)是一种将数据表中的行数据转换为列数据的技术。这种技术通常用于改变数据的结构,使得原始数据更适合进一步的数据分析或报告需求。 #### 知识点二:为什么要进行行转列? 1. **...

    Oracle中SQL语句行列之间相互转换

    以下示例展示了如何将表`"TOPICDATA"."topic_info"`中的多个列转换为单个列: ```sql SELECT id, 编号, bbb, aaa FROM ( SELECT id, 编号, 执行总和, 会议费执行, 材料费执行 FROM "TOPICDATA"."topic_info" ) ...

Global site tag (gtag.js) - Google Analytics