【SQLServer行转列的方法解析】教程文章相关的互联网学习教程文章

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

--创建测试表2 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N‘[dbo].[TestRows2Columns]‘) AND type in (N‘U‘))3 DROP TABLE [dbo].[TestRows2Columns]4 GO5 CREATE TABLE [dbo].[TestRows2Columns](6 [Id] [int] IDENTITY(1,1) NOT NULL,7 [UserName] [nvarchar](50) NULL,8 [Subject] [nvarchar](50) NULL,9 [Source] [numeric](18, 0) NULL 10 ) ON [PRIMARY] 11 GO 12 13 --插入...

SQL Server中Pivot()函数实现动态行转列

一般情况下Pivot()函数中in中只能写死,因为PIVOT()的in中不支持子查询,所以这样的话只能用存储过程来解决; CREATE PROCEDURE InsurancePivot @Foldercode VARCHAR(50), @isY VARCHAR(4) AS BEGIN DECLARE @ColumnNames VARCHAR(3000) SET @ColumnNames=‘‘ SELECT @ColumnNames = @ColumnNames + ‘[‘ + TESTNO + ‘],‘ FROM ( SELECT TESTNO FROM ORDTASK LEFT JO...

sql server 动态参数化 行转列【代码】

原文:https://www.cnblogs.com/gaizai/p/3753296.html、 修改:添加了列排序 DECLARE @sql_str NVARCHAR(MAX); DECLARE @sql_col NVARCHAR(MAX); DECLARE @tableName sysname; --行转列表 DECLARE @groupColumn sysname; --分组字段 DECLARE @row2column sysname; --行变列的字段 DECLARE @row2columnValue sysname; --行变列值的字段 DECLARE @sort2column sysname; --行变列值的字段 SET @tableName = ‘#tmp2‘; SET @groupCol...

SQL Server 行转列,列转行【代码】【图】

SELECT name ,value = ( STUFF(( SELECT ‘,‘ + valueFROM AWHERE name = Test.nameFORXML PATH(‘‘)), 1, 1, ‘‘) ) FROM A AS Test GROUP BY name; PS:STUFF语句就是为了去掉第一个【逗号】 附STUFF用法:(从原字符的第二个开始共三个字符替换为后面的字符)SELECT STUFF(‘abcdef‘, 2, 3, ‘ijklmn‘); 查询结果:aijklmnef 二、一列转成多行 表名:tb 表数据:想要的结果:查询语句:SELECT a.[name],b...

SQL Server 行转列,列转行。多行转成一列【代码】【图】

SELECT name ,value = ( STUFF(( SELECT ‘,‘ + valueFROM AWHERE name = Test.nameFORXML PATH(‘‘)), 1, 1, ‘‘) ) FROM A AS Test GROUP BY name; PS:STUFF语句就是为了去掉第一个【逗号】 附STUFF用法:(从原字符的第二个开始共三个字符替换为后面的字符)SELECT STUFF(‘abcdef‘, 2, 3, ‘ijklmn‘); 查询结果:aijklmnef 二、一列转成多行 表名:tb 表数据:想要的结果:查询语句:SELECT a.[name],b...

sqlserver 行转列(转)【图】

1、行转列 微软官方的图: 方法二 -- 行转列 DROP TABLE studentB; CREATE TABLE studentB (姓名 varchar(10),语文 varchar(10),数学 varchar(10),物理 varchar(10)); INSERT INTO studentBVALUES (‘张三‘, 75, 83, 96),(‘李四‘, 74, 84, 95); SELECT *FROM (SELECT 姓名, ‘语文‘ AS 科目, 语文 AS 分数FROM studentBUNION ALLSELECT 姓名, ‘数学‘ AS 科目, 数学 AS 分数FROM studentBUNION ALLSELECT 姓名, ‘物理...

mssql sqlserver 不固定行转列数据(动态列)

生成源数据表*/ create table #t (compname varchar(20), cheXi varchar(30), dayInfo int, daySaleValue int)/*生成源数据*/ insert into #t(compname,cheXi,dayInfo,daySaleValue) values(‘一汽丰田‘,‘锐志‘,‘1‘,20) insert into #t(compname,cheXi,dayInfo,daySaleValue) values(‘一汽丰田‘,‘皇冠‘,‘1‘,10) insert into #t(compname,cheXi,dayInfo,daySaleValue) values(‘一汽丰田‘,‘霸道‘,‘2‘,30) insert in...

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 Students values(‘李四‘,‘数学‘,95)i  nsert into Students values(‘李四‘,...

sql server的for xml path与变通的行转列【代码】【图】

假设有一个hobby表(爱好),表中有两个字段,一个是hobbyID(爱好id),一个是hName(爱好名称)。这样,我们执行一条最简单的带FOR XML PATH子句的SQL语句,看看查询出来的结果。SELECT * FROM hobby FOR XML PATH;<row><hobbyID>1</hobbyID><hName>爬山</hName> </row> <row><hobbyID>2</hobbyID><hName>游泳</hName> </row> <row><hobbyID>3</hobbyID><hName>美食</hName> </row>由结果可见FOR XML PATH子句可以将查询结果行输...

Sql server 中将数据行转列列转行(一)

第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 (StuName nvarchar(20), --学生名称StuSubject nvarchar(20),--考试科目StuScore int --考试成绩 ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student --查询所有数据/*第二步:写入测试数据 */ --张三 INSERT INTO #Student(StuName,StuSubject,StuScore) values (‘张三‘,‘语文‘,80); INSERT INTO #Student(StuName,StuSubjec...

Sql server 中将数据行转列列转行(二)【代码】【图】

第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 (StuName nvarchar(20), --学生名称Chinese int,Math int,English int ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student --查询所有数据INSERT INTO #Student(StuName,Chinese,Math,English) VALUES(‘张三‘,70,86,96); INSERT INTO #Student(StuName,Chinese,Math,English) VALUES(‘李四‘,49,85,86); INSERT INTO #Student(StuName,Chine...

SQL Server行转列

@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) ‘‘‘+ Go...

SQLServer pivot 行转列【代码】【图】

收入表 CREATE TABLE income (inid INT PRIMARY KEY IDENTITY(1, 1),indate DATETIME, --时间intype VARCHAR(10), -- 收入类型amount DECIMAL(18, 2) --金额 ) 查询按年月,将收入类型从行转成列DECLARE @sql varchar(8000) --判断临时表是否存在,存在则删除 IF OBJECT_ID(‘tempdb..#TEMP‘) IS NOT NULL DROP TABLE #TEMP--查询结果放入临时表中 SELECT LEFT(CONVERT(VARCHAR(100),indate,20),7) indate, intype,SUM(a...

sqlserver行转列【图】

还写了一篇 Linq 实现 DataTable 行转列 有时间大家可以看一下 sqlserver把行转成列在我们编码中是经常遇到的我做一个小例子大家看一下 1 -- 创建一个表 2 create table PayPhoneMoney 3 ( 4 id int identity ( 1 , 1 ), 5 userName Nvarchar ( 20 ), 6 payT还写了一篇Linq 实现 DataTable 行转列有时间大家可以看一下 sqlserver把行转成列在我们编码中是经常遇到的我做一个小例子大家看一下1 --创建一个表 2 create table PayPhon...

mssql数据库表行转列,列转行终极方案

mssql 数据库表行转列,列转行终极方案,需要的朋友可以参考下。代码如下:--行转列问题 --建立測試環境 Create Table TEST (DATES Varchar(6), EMPNO Varchar(5), STYPE Varchar(1), AMOUNT Int) --插入數據 Insert TEST Select 200605, 02436, A, 5 Union All Select 200605, 02436, B, 3 Union All Select 200605, 02436, C, 3 Union All Select 200605, 02436, D, 2 Union All Select 200605, 02436, E, 9 Union All Select 2006...