`
superlxw1234
  • 浏览: 552468 次
  • 性别: Icon_minigender_1
  • 来自: 西安
博客专栏
Bd1c0a0c-379a-31a8-a3b1-e6401e2f1523
Hive入门
浏览量:44582
社区版块
存档分类
最新评论

sqlserver 动态列转行

阅读更多

今天在sqlserver2012上遇到一个分析需求,用到动态列转行,记录一下:

 

create table t1 (id int,value varchar(100));
insert into t1 values(1,'a,b,c');
insert into t1 values(2,'a,b,c,d,e');
insert into t1 values(3,'a,b,c,d,e,f,g');
select * from t1;

  

  

1	a,b,c
2	a,b,c,d,e
3	a,b,c,d,e,f,g

 

   

SELECT a.id,b.[values] 
FROM ( 
			SELECT id,[VALUE] = CONVERT(XML , '<v>' + REPLACE(value , ',' , '</v><v>') + '</v>') 
			FROM t1  
		 ) a
OUTER APPLY 
		( SELECT  [values] = N.v.value('.' , 'nvarchar(max)')
           FROM    a.[value].nodes('/v') N ( v )
 	  ) b

   

1	a
1	b
1	c
2	a
2	b
2	c
2	d
2	e
3	a
3	b
3	c
3	d
3	e
3	f
3	g

 

   另外,要注意,如果value字段中有诸如&等在xml为特殊字符的字符,需要注意使用CONVERT(XML时候会报错,可以先将这些字符替换成其他的,在最终结果中再替换回来。

2
1
分享到:
评论

相关推荐

    SQL Server 列转行代码

    SQL Server 列转行代码,供大伙参考

    SqlServer行转列和列转行

    SqlServer如何进行行转列和列转行方法

    SqlServer列转行的另一种方式

    ### SqlServer列转行的另一种方式 在数据库处理过程中,经常需要将数据按照特定的方式进行转换,以便更好地满足业务需求或提高查询效率。常见的转换包括列转行、行转列等操作。通常我们使用`PIVOT`和`UNPIVOT`来...

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

    根据提供的标题、描述、标签及部分内容,本文将详细介绍SQL中实现列转行及行转列通用存储过程的具体方法,特别是针对Microsoft SQL Server版本的应用场景。 ### 标题解析:SQL列转行及行转列的通用存储过程 该标题...

    sqlserver使用UNPIVOT函数列转行

    ### SQL Server 使用 UNPIVOT 函数实现列转行 #### 概述 在 SQL Server 中,`UNPIVOT` 函数是一个非常实用的功能,主要用于将数据表中的列转换为行,即“列转行”操作。这种操作在数据分析过程中经常用到,尤其是...

    sql2005列转行存储过程代码

    在本案例中,我们将详细探讨如何在SQL Server 2005中进行列转行的操作,特别是通过存储过程来实现。 首先,列转行通常用于处理具有固定列数但列名可能变化的数据。例如,你可能有一个表,其中每个月的销售数据存储...

    关于SQL SERVER 数据库中列转行的研究.docx

    ### 关于SQL Server数据库中列转行的研究 #### 背景与问题描述 在进行数据处理时,经常需要将数据库表中的一列带有逗号分隔的字符串数据转换为多行显示。这种操作通常被称为“列转行”,即从单个列中拆分出多个值,...

    (SQL)列转行工具

    可以把一列转成一行…… 分隔符默认为英文逗号,也可以转成INSERT 中VALUES()后面的单引号加逗号...以前用T-SQL时,总是把一列复制到EXCEL中,转置,然后复制到记本事中,把一空格替换成逗号……,这个工具可以直接搞定

    sqlserver 实现 行转列 split 分割的函数

    sqlserver 实现 行转列 split 分割的函数,具体使用方法写有在文件里。

    行转列sql_server

    sql server 用于行转列,省得各位去找语句,select to_char(wm_concat('''' || valuelabel || '''')) name from (select distinct t.valuelabel from structuredrecruit t) select * from (select t.uhid, t....

    sql 列转行

    动态 SQL 列转行是指在不知道字段的情况下,将行数据转换为列数据的过程。例如,我们不知道有多少门科目,需要动态生成 SQL 语句。 ```sql declare @sql varchar(8000) set @sql = 'select Name as ' + '姓名' ...

    sqlserver 行转列,列转行

    列转行行转列

    SQL SERVER 根据关键字符,将一列分成多行

    可根据关键字符将一列分成多行显示,例如 A B 1 1.1.2 拆分成 1 1 1 1 1 2 进行相关的显示

    SQL 2005 列转行的方法

    本文将详细介绍两种实现SQL Server 2005中列转行的方法:使用PIVOT和使用CASE语句。 **方法一:使用PIVOT** PIVOT是SQL Server 2005引入的一个新特性,用于将一个表中的列转换为行。以下是一个基本的PIVOT使用示例...

    SQL列转行显示方法

    ### SQL列转行显示方法 #### 一、背景及需求 在处理数据库中的数据时,有时候需要将一列中的多个值转化为多列的形式展示,这通常称为“列转行”操作。这种转换可以使得数据更适合特定的报表或分析需求。例如,原始...

    SQL Server 将某一列的值拼接成字符串.docx

    在SQL Server中,将某一列的值拼接成字符串是一个常见的需求,这通常涉及到数据的格式化输出,比如创建报告或者导出数据。这个过程可以通过几种不同的方法来实现,其中包括使用FOR XML PATH子句和CONCAT函数。我们将...

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

    以下将详细探讨如何在SQL Server中进行行转列和列转行的操作。 1. **行转列(Pivot)** 行转列是将某一列的数据作为新表的列名,而其他列对应的数据则填充到这些新列中。在SQL Server中,可以使用`PIVOT`操作或`...

    Sql Server时间函数

    ### SQL Server 时间函数详解 #### 1. GetDate() **函数描述**: `GetDate()` 是 SQL Server 中一个非常常用的时间函数,它返回系统当前的日期和时间。 **语法**: ```sql SELECT GETDATE(); ``` **示例**: ```...

    SQL知识点之列转行Unpivot函数

    在SQLSERVER中,Unpivot函数的语法如下: ```sql SELECT CustomerID, Phone, PhoneNumber FROM dbo.CustomerPhones UNPIVOT ( PhoneNumber FOR Phone IN (Phone1, Phone2, Phone3) ) AS Unpvt; ``` 在这个查询中...

Global site tag (gtag.js) - Google Analytics