sql server常用方法

sql server 查询数据变成字符串

;with datum as (
select datumName from tb_b_datum where  status = 1 
)select DatumName= stuff((SELECT ',' +  datumName FROM (select distinct datumName from datum) t1  for xml path('')),1,1,'')

结果
1,1,1,1

积分排行

select DatumName , row_number() over(order by DatumName asc, DatumId) as OrderNum
from tb_b_datum 
where status = 1 

在这里插入图片描述

数据排序后取前三条
例如:学生一个学生同一门课程有多条成绩,只取其中2门

学生科目分数
张三英语60
张三英语86
张三英语90
张三英语50
张三英语20
李四英语60
李四英语77
李四英语55
李四英语88
李四英语100
select 
	row_number()over(partition by username order by userName,CourseName asc) as number,CourseName,username 
into #CourseList
from tb_e_CourseList

在这里插入图片描述

select 
CourseName,userName
from #CourseList where number <= 2

在这里插入图片描述

在使用列转行

	select 
	b.studentName
	,a.userName
	,isnull(Stuff((Select ','+ uc.CourseName From #CourseList uc 
	where a.username = uc.UserName and uc.number <= 2
	for xml path('')),1,1,''),'') As CourseName
	from #numberList a
	inner join  tb_e_student b on a.username = b.username
	group by b.studentName,a.userName

sql server 纵向转横向
表结果
在这里插入图片描述
sql语句

SELECT * 
FROM [tb_t_nian] pivot(MAX(绩效) FOR 季度 in([1],[2],[3],[4])) a

结果
在这里插入图片描述

sql server 重复的数据删除剩余一条(这里的id使用的uuid)

select username,min(id) as id , count(username) as num 
from tb_e_table 
group by username having count(username) > 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值