经典SQL问题: 行转列,列转行】的更多相关文章

--★转换结果如上图 1.首先创建表: CREATE TABLE [成绩表]( ,) NOT NULL, )NULL, , )NULL, , )NULL, , )NULL ) ON [PRIMARY] 2.插入测试数据 INSERT INTO 成绩表([姓名],[语文],[数学],[英语]) ,,,,),(,,),(,,),(,,),(,,) 3.执行语句进行行列转换 ) select @sql_1='' select @sql_1= @sql_1 + 'select [编号],[姓名],['+…
CREATE TABLE DEPT (DeptNo INT IDENTITY(1, 1)NOT NULL ,  Country VARCHAR(50) ,  Location VARCHAR(50) NULL )   SET IDENTITY_INSERT DEPT ON INSERT  DEPT( DeptNo, Country, Location )VALUES  ( 1, 'User1', 'A' ) INSERT  DEPT( DeptNo, Country, Location )VAL…
CREATE TABLE DEPT (DeptNo INT IDENTITY(1, 1)NOT NULL ,  Country VARCHAR(50) ,  Location VARCHAR(50) NULL )   SET IDENTITY_INSERT DEPT ON INSERT  DEPT( DeptNo, Country, Location )VALUES  ( 1, 'User1', 'A' ) INSERT  DEPT( DeptNo, Country, Location )VAL…
with a as( select * from( select 1 userId , '天津' province union select 1 userId , '北京' union select 1 userId , '上海' union select 2 userId , '北京' union select 2 userId , '上海' ) model ) select distinct userId, stuff( (select ','+province from a where u…
一.多行转成一列(并以","隔开) 表名:A 表数据: 想要的查询结果: 查询语句: SELECT name , value = ( STUFF(( SELECT ',' + value FROM A WHERE name = Test.name FOR XML PATH('') ), , , '') ) FROM A AS Test GROUP BY name; PS:STUFF语句就是为了去掉第一个[逗号] 附STUFF用法:(从原字符的第二个开始共三个字符替换为后面的字符) ,…
sql的行转列(PIVOT)与列转行(UNPIVOT)   在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强 一.行转列 1.测试数据准备 CREATE TABLE [StudentScores] ( [UserName] NVARCHAR(20), --学生姓名 [Subject] NVARCHAR(30), --科目 [Score] FLOAT, --成绩 )…
一.多行转成一列(并以","隔开) 表名: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用法:(从原字符的第二个开始共三个字符替换为后面的字符)…
老规矩,先弄一波测试数据,数据填充代码没有什么意义,先折叠起来: /* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName ), --学生名称 Chinese int, Math int, English int ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student --查询所有数据 ,,); ,,); ,,); ,,); 一:列转行,下面是转换之前与之后的截图对比 如果想要行转列,参考…
hello_test是我的存储过程的名字,在mapper.xml文件中是这么写的 <select id="getPageByProcedure" statementType="CALLABLE" databaseId="oracle"> {call hello_test( #{start,mode=IN,jdbcType=INTEGER}, #{end,mode=IN,jdbcType=INTEGER}, #{count,mode=O…