sql里的多行多列转一行多列小技巧

---恢复内容开始---

[

今天下午接受了一个紧急小任务,是将一组比赛记录统计出来,将象棋游戏玩家的两条记录在一行里面显示,进数据库看之后是首先想到的是行转列,但是一开始就觉得不对,后来写到一半确实不对,后来上网查询了半天多行多列转一行多列,发现又要写算法又要写函数,看了实在头疼,不想这么麻烦。于是自己突然间灵机一动,闪过一个小想法,立马实施,就是将所有记录前面都加上一个标识列num(row_number()函数),然后用case 判断奇偶行在显示,就行了。
select row_number() over(order by DrawID)as num,* from QPTreasureDB.dbo.RecordDrawScore where
DrawID in(select DrawID from QPTreasureDB.dbo.RecordDrawInfo where KindID=‘400‘) 。不知道是不是一个小技巧呢,跟大家分享一下

pasting

---恢复内容结束---

时间: 2024-10-08 06:58:37

sql里的多行多列转一行多列小技巧的相关文章

sql里将重复行数据合并为一行,数据用逗号分隔

DECLARE @T1 table ( UserID int , UserName nvarchar(50), CityName nvarchar(50) ); insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') insert into @T1 (UserID,UserName,CityName) values (2,'b','北京') insert into @T1 (UserID,UserName,CityName)

Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数

示例表 tb 数据如下 id value-----1 aa1 bb2 aaa2 bbb2 ccc SELECT id, [val] = ( SELECT [value] + ',' FROM tb AS b WHERE b.id = a.id FOR XML PATH('') ) FROM tb AS a 显示结果 1 aa,bb, 1 aa,bb, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, SELECT id, [val]=( SELECT [v

SQL SERVER将多行数据合并成一行(转)

1)比如表中有三列数据: 2)执行如下查询: 1 SELECT [USER_NAME], [USER_ACCOUNT] 2 , [ROLE_NAME] = stuff(( 3 SELECT ',' + [ROLE_NAME] 4 FROM [WAP_WORKSHEET].[dbo].[userTest] 5 WHERE [USER_ACCOUNT] = a.[USER_ACCOUNT] 6 FOR XML path('') 7 ), 1, 1, '') 8 FROM [WAP_WORKSHEET

sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果

select  [value] = stuff((select ','+modmb003  from modmb detail where modmb=18 for xml path('')), 1, 1, '') 其中stuff的作用是:删除指定长度的字符,并在指定的起点处插入另一组字符 语法:STUFF ( character_expression , start , length ,character_expression ) 列:SELECT STUFF('abcdef', 2, 3,

PCB SQL MS 将多行有序数据转为一行数据(一列转一行)

一.原数据:多行有序 SELECT CC.techname FROM PPEflow BB LEFT JOIN pubgyxxb CC ON BB.techno = CC.techno WHERE BB.Pdctno = 'AT00101CA0' AND bb.flowLevel = 2 ORDER BY BB.globalOrder 二.转换后数据: SELECT '[' + CC.techname + ']-→' + '' FROM PPEflow BB LEFT JOIN pubgyxxb

将部分相同的多行记录转成一行多列

数据库环境:SQL SERVER2008R2 需求如下图: 简单解释一下需求,将同一年月的多行转到一行,分别展示每个用户的信息,在最后分别对前面数量和金额进行合计. 这其实又是行列转换的一个应用,下面直接贴SQL /*数据准备*/ WITH x0 AS ( SELECT CONVERT(DATE, '2015-01-01') AS 日期 , N'小1' AS 姓名 , 100 AS 数量 , 1000 AS 金额 UNION ALL SELECT CONVERT(DATE, '2015-01-0

SQL Server中将多行数据拼接为一行数据(一个字符串

方法一: 使用T-SQLDECLARE @Users NVARCHAR(MAX)SET @Users = ” SELECT @Users = @Users + ‘,’ + UserName FROM dbo.[User]WHERE RoleID = 1 SELECT @Users 方法二:使用for xml path(”) 和stuff–使用 自连接.for xml path(”)和stuff合并显示多行数据到一行中 –注–1.计算列可以不用包含在聚合函数中而直接显示,如下面语句的val.–2.

总结自己使用shell命令行经常使用到的8个小技巧

原创blog,转载请注明出处 Shell是命令解释器 [[email protected] ~]# cat /etc/shells 查看本系统共支持哪些shell 1 tab 命令补全 这个差点儿每次都能用到,比方我有个文件叫file.txt,假设这个文件夹下仅仅有一个文件名称以f开头,则我输入f然后tab就会自己主动补全出file.txt 2  两个快捷键 CTRL+L 清屏 CTRL+U 清除一行中(光标前的部分) 3 命令别名 alias:查看当前的别名 定义一个新的别名,这里定义删除文件

关于SQL Server将一列的多行内容拼接成一行的问题讨论(转载)

说明:本文仅供分享,版权属于原作者. 昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_classes      ep_name AAA