• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

–竖表变行表_sqlserver

sqlserver 搞代码 7年前 (2018-06-16) 102次浏览 已收录 0个评论

–竖表变行表
–创建表
create table A(
工号 varchar(20),
日期 smalldatetime,

http://www.gaodaima.com/34930.html–竖表变行表_sqlserver

时间 varchar(20)
)
–插入测试数据
insert into A select ’01’, ‘2004-10-01′, ’07:50’
union select ’01’, ‘2004-10-01′, ’11:35’
union select ’01’, ‘2004-10-01′, ’14:20’
union select ’01’, ‘2004-10-02′, ’08:01’
union select ’01’, ‘2004-10-02′, ’14:30’
union select ’02’, ‘2004-10-01′, ’07:55’
union select ’02’, ‘2004-10-02′, ’07:58’
union select ’03’, ‘2004-10-01′, ’07:56’
–创建存储过程
create proc p_t
as
declare @id varchar(20),@date smalldatetime,@time varchar(50)
select * into #a from A order by 工号,日期,时间
update #a set 时间=case when (工号=@id) and (日期=@date) then @time else 时间 end,
@time=case when (工号=@id) and (日期=@date) then @time+’,’+时间 else 时间 end,
@id=工号,@date=日期
select 工号,日期,max(时间) as 时间 from #a group by 工号,日期 order by 工号
–执行
exec p_t
–测试结果
工号 日期 时间
———————————————
01 2004-10-01 00:00:00 07:50,11:35,14:20
01 2004-10-02 00:00:00 08:01,14:30
02 2004-10-01 00:00:00 07:55
02 2004-10-02 00:00:00 07:58
03 2004-10-01 00:00:00 07:56
(所影响的行数为 5 行)

select [Empid] from [Employee]
得出结果:
张三
李四
王五

想要将它合并成这种结果:
张三,李四,王五…,…

declare @s varchar(8000)
set @s=”
select @s=@s+’,’+[Empid] from [Employee]
print stuff(@s,1,1,”)

declare @sql varchar(2000)
set @sql=”
select @sql=@sql+[Empid]+’,’ from [Employee]
set @sql=left(@sql,len(@sql)-1)
print @sql

 

欢迎大家阅读《–竖表变行表_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:–竖表变行表_sqlserver

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址