SQL Server行转列

在很多情况下需要查询出来的数据进行行转列,看如下的例子,#t是一个临时表,可以换成真实存在的表:

--头部信息,这部分不参与行转列DECLARE @SqlText NVARCHAR(4000)=‘SELECT DeviceName 货机名称, DeviceAddress 货机地址,CONVERT(VARCHAR(10), ReplenishmentCreatedDate, 20) 时间,  ‘ -- SQL头部分 SELECT
--行转列如下:可以重命名字段名,列头用其中一个列生成,列信息用另一个字段的信息,可以让多列数据信息转换
    SELECT @SqlText = @SqlText + ‘ SUM(CASE WHEN GoodsName=‘‘‘
                      + GoodsName
                      + ‘‘‘ THEN ISNULL(ReplenishmentTotalQuantity, 0) END) ‘‘‘
                      + GoodsName + ‘(上货[件])‘‘,‘
                      + ‘ SUM(CASE WHEN GoodsName=‘‘‘
                      + GoodsName
                      + ‘‘‘ THEN ISNULL(PickUpTotalQuantity,0) END) ‘‘‘
                      + GoodsName + ‘(下货[件])‘‘,‘
    FROM   (SELECT DISTINCT GoodsName
            FROM   #t) T -- 拼接CASE WHEN 

    SELECT @SqlText = LEFT(@SqlText, Len(@SqlText)-1)
                      + ‘ FROM #t GROUP BY DeviceName, DeviceAddress,CONVERT(VARCHAR(10), ReplenishmentCreatedDate, 20)‘ -- 拼接 FROM后面部分

    PRINT @SqlText

    EXEC (@SqlText)

原文地址:https://www.cnblogs.com/zunzunQ/p/11958923.html

时间: 2024-10-13 04:39:55

SQL Server行转列的相关文章

SQL Server 行转列

语法: PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现 完整语法: table

sql server 行转列(转载)

SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2

SQL Server 行转列,列转行

一.多行转成一列(并以","隔开) 表名:A 表数据: 想要的查询结果: 查询语句: SELECT name , value = ( STUFF(( SELECT ',' + value FROM A WHERE name = Test.name FOR XML PATH('') ), 1, 1, '') ) FROM A AS Test GROUP BY name; PS:STUFF语句就是为了去掉第一个[逗号] 附STUFF用法:(从原字符的第二个开始共三个字符替换为后面的字符)

做图表统计你需要掌握SQL Server 行转列和列转行

说在前面 做一个数据统计和分析的项目,每天面对着各种数据,经过存储过程从源表计算汇总后需要写入中间结果表以提高数据使用效率,那么此时就需要用到行转列和列转行. 1.列转行 数据经过计算加工后会直接生成前端图表需要的数据源,但是程序里又需要把该数据经过列转行写入中间表中,下次再查询该数据时直接从中间表查询数据. 1.1 列换行语法 table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 1.2  行转列案例

SQL server 行转列 列转行

1.简单案例 create database Hang go use Hang create table Students ( Name varchar(50), Kemu varchar(50), sor int ) insert into Students values('张三','语文',8888) insert into Students values('张三','语文',85) insert into Students values('张三','数学',75) insert into

SQL Server 行转列 小例

PIVOT 语法. SELECT <非透视的列>,     [第一个透视的列] AS <列名称>,     [第二个透视的列] AS <列名称>,     ...     [最后一个透视的列] AS <列名称>, FROM     (<生成数据的 SELECT 查询>)     AS <源查询的别名> PIVOT (     <聚合函数>(<要聚合的列>) FOR [<包含要成为列标题的值的列>]

SQL Server将一列的多行内容拼接成一行的实现方法

SQL Server将一列的多行内容拼接成一行的实现方法 投稿:mdxy-dxy 这篇文章主要介绍了SQL Server将一列的多行内容拼接成一行的实现方法,需要的朋友可以参考下 下面大家先看下示例代码: 示例 昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 : 类别 名称 AAA 企业1 AAA 企业2 AAA 企业3 BBB 企业4 BBB 企业5 我想把这个表变成如下格式: 类别 名称

SQL Server 2014 聚集列存储

SQL Server 自2012以来引入了列存储的概念,至今2016对列存储的支持已经是非常友好了.由于我这边线上环境主要是2014,所以本文是以2014为基础的SQL Server 的列存储的介绍.下面我们主要看一下列存储的发展以及一些原理: 列存储的开发是想要处理超大量数据进行分析计算,于是在SQL Server 2012时,SQL Server 引入了列存储索引,用以显著提供高传统数据仓库类型语句的性能,并在SQL Server 2014中做了进一步加强.列存储会将一个列的数据单独存放在一

sql server拼接一列字段

有一表,名曰IPSlot,欲取IP整列字段. sql语句,利用sql server的xml auto将表数据转换成xml=> 1 select name= 2 STUFF( 3 REPLACE( 4 REPLACE((select IP from IPSlot for xml auto), '<IPSlot IP="', '/') 5 , '"/>', '') 6 , 1, 1, '') 效果=> 关于stuff关键字用法示例=> 1 SELECT STU