数据横向显示问题?

lq1013 2006-02-14 10:55:20
表结构如下:
matimebookid int 自增长,
worktime smalldatetime,
nUserID int
数据
1 2006-02-14 07:30:01 1
2 2006-02-14 07:40:01 1
3 2006-02-15 07:30:01 1
4 2006-02-15 07:40:01 1
5 2006-02-14 07:30:01 2
6 2006-02-14 07:40:01 2
7 2006-02-15 07:30:01 2
8 2006-02-15 07:40:01 2
要求显示格式:
1,2006-02-14 07:30:01,2006-02-14 07:40:01
1,2006-02-15 07:30:01,2006-02-15 07:40:01
2,2006-02-14 07:30:01,2006-02-14 07:40:01
2,2006-02-15 07:30:01,2006-02-15 07:40:01

...全文
159 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2006-02-14
  • 打赏
  • 举报
回复
每天的记录数据是未知的?
有规律吗?
lq1013 2006-02-14
  • 打赏
  • 举报
回复
1,2006-02-14 07:30:01,2006-02-14 07:40:01,2006-02-14 07:50:01
1,2006-02-15 07:30:01,2006-02-15 07:40:01,null
2,2006-02-14 07:30:01,2006-02-14 07:40:01,null
2,2006-02-15 07:30:01,2006-02-15 07:40:01,null
-狙击手- 2006-02-14
  • 打赏
  • 举报
回复
假如一天中有三条记录,我也要显示三条出来啊
---
什么意思,发点数据看看
lq1013 2006-02-14
  • 打赏
  • 举报
回复
假如一天中有三条记录,我也要显示三条出来啊
-狙击手- 2006-02-14
  • 打赏
  • 举报
回复
declare @t table(id int,d datetime,userid int)
insert @t select 1,'2006-02-14 07:30:01',1 union all
select 2,'2006-02-14 07:40:01',1 union all
select 3,'2006-02-15 07:30:01',1 union all
select 4,'2006-02-15 07:40:01',1 union all
select 5,'2006-02-14 07:30:01',2 union all
select 6,'2006-02-14 07:40:01',2 union all
select 7,'2006-02-15 07:30:01',2 union all
select 8,'2006-02-15 07:40:01',2

select * from @t
select distinct userid,min(d),max(d) from @t group by convert(char(8),d),userid
/*


userid
----------- ------------------------------------------------------ ------------------------------------------------------
1 2006-02-14 07:30:01.000 2006-02-14 07:40:01.000
1 2006-02-15 07:30:01.000 2006-02-15 07:40:01.000
2 2006-02-14 07:30:01.000 2006-02-14 07:40:01.000
2 2006-02-15 07:30:01.000 2006-02-15 07:40:01.000

(所影响的行数为 4 行)


*/
lq1013 2006-02-14
  • 打赏
  • 举报
回复
多谢参与
-狙击手- 2006-02-14
  • 打赏
  • 举报
回复
create table tt(id int,d datetime,userid int)
insert tt select 1,'2006-02-14 07:30:01',1 union all
select 2,'2006-02-14 07:40:01',1 union all
select 2,'2006-02-14 07:50:01',1 union all
select 3,'2006-02-15 07:30:01',1 union all
select 4,'2006-02-15 07:40:01',1 union all
select 5,'2006-02-14 07:30:01',2 union all
select 6,'2006-02-14 07:40:01',2 union all
select 7,'2006-02-15 07:30:01',2 union all
select 8,'2006-02-15 07:40:01',2

go
create function get(@d datetime,@userid int)
returns varchar(1000)
begin
declare @s varchar(8000)
set @s = ''
select @s = @s + ',' + convert(varchar(19),d,120) from tt where datediff(d,d,@d) = 0 and userid = @userid
select @s = stuff(@s,1,1,'')
return @s
end
go
select distinct userid,dbo.get(d,userid) as d from tt


drop table tt
drop function get

/*


userid d
----------- ------------------------------------------------------
1 2006-02-14 07:30:01,2006-02-14 07:40:01,2006-02-14 07:50:01
1 2006-02-15 07:30:01,2006-02-15 07:40:01
2 2006-02-14 07:30:01,2006-02-14 07:40:01
2 2006-02-15 07:30:01,2006-02-15 07:40:01

*/
lq1013 2006-02-14
  • 打赏
  • 举报
回复
没有规律,这是一个考勤表

34,588

社区成员

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

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