--创建测试表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 --插入...
一般情况下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...
原文: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...
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...
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...
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 姓名, ‘物理...
生成源数据表*/ 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...
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(‘李四‘,...
假设有一个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子句可以将查询结果行输...
第一步:创建临时表结构 */ 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...
第一步:创建临时表结构 */ 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...
@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...
收入表 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...
还写了一篇 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 数据库表行转列,列转行终极方案,需要的朋友可以参考下。代码如下:--行转列问题 --建立測試環境 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...