您的位置:首页 > 其它

根据存储过程包含某个关键字,查找相关所有存储过程信息及根据多个主键删除重复列

2015-01-23 11:54 239 查看
--STUFF用法, ReportDetail 表存储的PersonelID为A,B,C,D  查询出来将对应A B C D 转换成人的姓名姓名1,姓名2,姓名3,姓名4
STUFF((SELECT ','+Personnel.PersonnelName FROM Personnel  WHERE a.PersonnelId LIKE '%'+Personnel.PersonnelId+'%'
FOR XML PATH('')),1,1,'') PersonName,


--删除重复列

delete from tbAccount

where NaturalCode in (select NaturalCode from tbAccount group by NaturalCode having count(NaturalCode) > 1)

and AutoID not in (select min(AutoID) from tbAccount

group by NaturalCode having count(NaturalCode)>1)

--根据多个主键删除重复列

delete t

FROM

(SELECT *,ROW_NUMBER() OVER(partition BY Period

,LegalEntity

,ino_id

,BUZEI ORDER BY Period) AS Row FROM tbl_Journal with(nolock)

where period>'201405'

) AS t

WHERE Row>1

--根据关键字查询相关存储过程

select o.name,c.text from sys.objects o

inner join syscomments c on o.object_id=c.id

where o.type='P' AND c.text like '%Approved%'

--行转列 Priovt

if object_id('tempTb')is not null drop table tempTb

go

create table tempTb (姓名 varchar(10),课程 varchar(10),分数 int)

insert into tempTb values('张三','语文',74)

insert into tempTb values('张三','数学',83)

insert into tempTb values('张三','物理',93)

insert into tempTb values('李四','语文',74)

insert into tempTb values('李四','数学',84)

insert into tempTb values('李四','物理',94)

go

declare @sql varchar(8000)

set @sql='' --初始化变量@sql

select @sql=@sql+','+课程 from tempTb group by 课程--变量多值赋值

--STUFF 函数将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。

--stuff(字符串,从1个字符,删除一个字符,插入一个新的字符串)

set @sql=stuff(@sql,1,1,'')--去掉首个','

set @sql='select * from tempTb pivot (max(分数) for 课程 in ('+@sql+')) a'

exec(@sql)

select 姓名,

sum(case 课程 when'语文'then 分数 else 0 end)语文,

sum(case 课程 when'数学'then 分数 else 0 end)数学,

sum(case 课程 when '物理'then 分数 else 0 end)物理

from tempTb

group by 姓名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐