`

SQL 多列转换为一行【转】

    博客分类:
  • SQL
sql 
阅读更多

--创建测试表
IF OBJECT_ID('test') IS NOT NULL
    DROP TABLE test
CREATE TABLE dbo.test(
    id int IDENTITY(1,1) NOT NULL,
    name varchar(50) NULL,
    subject varchar(50) NULL,
    source decimal(18,2) NULL
)
GO

--插入测试数据
INSERT INTO test (name,subject,source) 
    SELECT '张三','语文',60  UNION ALL
    SELECT '张三','英语',90  UNION ALL
    SELECT '李四','语文',70  UNION ALL
    SELECT '李四','数学',80  UNION ALL
    SELECT '王五','数学',75  UNION ALL
    SELECT '王五','英语',80
GO

SELECT * FROM test

--1 通过 select 累加
DECLARE @sql_col VARCHAR(8000)
SELECT @sql_col = ISNULL(@sql_col + ',','') + QUOTENAME(Subject) FROM test 
GROUP BY Subject

SELECT @sql_col

--2 通过 FOR xml path('') 合并字符串记录
SELECT 
    STUFF(
        (SELECT '#' + Subject
         FROM test
         WHERE name = '王五'
         FOR xml path('')
        ),1,1,''
        )
  
--3 分组合并字符串记录
SELECT
    name,
    Subject = (
               STUFF(
                    (SELECT '#' + Subject
                     FROM test
                     WHERE name = A.name
                     FOR xml path('')
                    ),1,1,''
                    )
                 )
FROM test A
GROUP by name


转自:https://www.cnblogs.com/xiaozhi1236/p/6344134.html?utm_source=itdadao&utm_medium=referral
分享到:
评论

相关推荐

    将SQL数据表的一列转换为一行.docx

    SQL 数据表列转换为一行 在数据库管理中,经常会遇到将...这个示例展示了如何使用存储过程、临时表、动态 SQL 语句、 WHILE 循环、CALL 语句、ALTER TABLE 语句和 UPDATE 语句来将 SQL 数据表的一列转换为一行多列。

    DB2 SQL 实现行转列,列转行

    DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列

    sql多行转列

    主要是关于sqlserver的多行转列的问题,这是我经过个人测试的语句。

    sql server 2008 将一列值转换成一个字符串

    在SQL Server 2008中,将一列值转换为一个字符串是一个常见的需求,特别是在进行数据汇总或生成报告时。本篇文章将详细介绍如何利用SQL Server 2008中的功能来实现这一需求,并深入探讨背后的原理和技术要点。 ### ...

    sql列行转换

    为了将表中的值从多列转换成单列,我们需要利用到T-SQL中的几个关键函数:`FOR XML AUTO`、`STUFF`等。具体实现步骤如下: - 首先,创建一个新的表`C`,用于存储转换后的数据。 - 使用`SELECT DISTINCT`获取所有...

    sql动态行转列 存储过程

    在SQL数据库操作中,"行转列"是一种常见的数据转换需求,它将表格中的多行数据转换为单列显示,通常用于数据汇总和分析。在本案例中,我们主要探讨如何使用SQL语句,尤其是存储过程,来实现动态的行转列功能。这在...

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

    该标题表明文章主要介绍在SQL中如何通过一个通用的存储过程实现列数据转化为行数据(列转行),或者反过来将行数据转化为列数据(行转列)。这两种转换方式在处理多维度数据分析时十分常见。 ### 描述解析:SQL列...

    SQL语句行列转换(附带数据库、表、视图操作)

    SQL 语句行列转换是数据库管理系统中的一种常见操作,它可以将数据从行转换为列,或者从列转换为行。在这个过程中,需要使用数据库管理语言(Database Management Language,DML)来实现数据的转换。下面我们将详细...

    sql利用union all行转列

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

    access行转列示例

    “行转列”是将数据表中的一行数据转换为多列显示,反之,“列转行”则是将一列数据转化为多行展示。这两种操作在处理宽表和长表之间的转换时特别有用,例如,当需要将多个具有相同属性的数据项合并到同一列或者将...

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

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

    SQL行转列参考代码(sqlserver)

    在SQL Server中,"行转列"是一种常见的数据操作,它可以帮助我们把表格中的多行数据转换成一列,或者将某一列的数据转换为多列显示。这种技术在数据分析、报表制作以及信息展示中非常实用。本文将详细介绍SQL Server...

    sql行列转换扩展

    行转列结构是指将多个列合并为一列,行中有共同特征的数据。这种方法通常用于将多个课程或项目合并为一个单一的列。在 SQL 中,我们可以使用 UNION ALL 语句来实现这种操作。例如: ```sql SELECT 学号, 课程='语文'...

    SqlServer行转列

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

    SQL行转列显示

    这种转换技术被称为“行转列”或“透视”(Pivot),而在SQL语言中实现这一功能,最常用的方法便是利用PIVOT函数。本文将深入探讨如何使用SQL中的PIVOT函数将表格数据由行格式转换为列格式,并通过具体案例进行详细...

    [数据库] SQL查询语句表行列转换及一行数据转换成两列1

    在SQL查询中,表的行列转换以及一行数据转换成两列是常见的操作,尤其是在数据分析和报表展示时。本文将详细讲解这些概念,并提供相应的SQL语句示例。 首先,我们从创建数据库表及插入数据开始。在例子中,创建了一...

    Mysql 行转列,列转行 SQL语句和示例表结构SQL

    列转行是将多列数据转换为单列,每行包含原始列的一个值。MySQL 可以通过 UNION ALL 或 CROSS JOIN 实现这一操作。继续使用 `sales` 表为例,如果要将年份和销售额转为行,可以这样操作: ```sql SELECT product_id...

Global site tag (gtag.js) - Google Analytics