请教一sql语句

netboygg 2013-01-02 01:43:46
现在有一张表:
里面有2个字段

work date
工作1 2012-12-30 08:30
工作2 2012-12-30 09:30
..............................

怎么列出如下的要求

工作1 时间 间隔 工作2 时间 间隔 .....

工作1 2012-12-30 08:30 1 工作2 2012-12-30 09:30 1.....

横排列出每项工作,工作时间 及与上一项工作之间的间隔时间

谢谢~!
...全文
353 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
netboygg 2013-01-02
  • 打赏
  • 举报
回复
ok了 谢谢。我知道怎么改了。
netboygg 2013-01-02
  • 打赏
  • 举报
回复
引用 2 楼 hjywyj 的回复:
改一下 select @sql=stuff((select ','''+work+'''工作'+rtrim(row)+','''+convert(varchar(100),date)+'''时间'+isnull(','+rtrim(间隔)+'间隔','') from source for xml path('')),1,1,'')
谢谢前辈,但是 date字段是不同的,work字段倒是可以固定的。如果work字段也是不同的呢?
  • 打赏
  • 举报
回复
改一下 select @sql=stuff((select ','''+work+'''工作'+rtrim(row)+','''+convert(varchar(100),date)+'''时间'+isnull(','+rtrim(间隔)+'间隔','') from source for xml path('')),1,1,'')
  • 打赏
  • 举报
回复
declare @sql nvarchar(1000) ;with tt(work,date) as( select '工作1', '2012-12-30 08:30' union all select '工作2', '2012-12-30 09:30' ), tb as( select row=row_number()over(order by getdate()),* from tt ), source as( select *,间隔=(select datediff(hh,tb1.date,tb2.date) from tb tb2 where tb2.row=tb1.row+1) from tb tb1 ) select @sql=stuff((select ','''+work+'''工作'+rtrim(row)+','''+convert(varchar(100),date)+'''时间,'+rtrim(isnull(间隔,0))+'间隔' from source for xml path('')),1,1,'') exec (N'select '+@sql)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧