重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
SQLSERVER本身不可以, 你需要用报表服务或者自己写一个程序来展示数据
创新互联建站专注于绍兴网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供绍兴营销型网站建设,绍兴网站制作、绍兴网页设计、绍兴网站官网定制、成都小程序开发服务,打造绍兴网络公司原创品牌,更为您提供绍兴网站排名全网营销落地服务。
首先要实现你这样的结果在SQLSERVER中基本是不可能的,因为这样的展示基本违背了第一范式的原则。
要实现这个唯独通过程序来操作。
或者你可以实现为:
a 11、22、33(‘、’为用户自定义的分隔符)
b 44、55、66
看样子像sqlserver,就按sqlserver的写了
创建测试表,数据:
create table test
(requestid int,
logid int,
operatedate varchar(10),
operatetime varchar(10),
operator int);
insert into test values (502,1372,'2018-06-13','16:16:03',155);
insert into test values (502,1446,'2018-06-14','09:00:32',153);
insert into test values (502,1472,'2018-06-14','09:33:07',157);
insert into test values (502,1474,'2018-06-14','09:35:11',151);
insert into test values (502,1657,'2018-06-14','15:17:10',153);
insert into test values (502,1660,'2018-06-14','15:18:17',155);
insert into test values (502,1661,'2018-06-14','15:19:01',153);
insert into test values (502,1662,'2018-06-14','15:19:48',157);
insert into test values (502,1677,'2018-06-14','15:31:34',151);
insert into test values (502,1694,'2018-06-14','16:42:51',12);
insert into test values (502,1709,'2018-06-14','18:08:45',9);
insert into test values (502,1730,'2018-06-15','08:09:14',158);
insert into test values (502,1732,'2018-06-15','08:09:16',157);
执行:
with t as
(select test.*,row_number() over (partition by requestid order by logid) rn from test)
select t1.requestid,t1.logid,cast(t1.operatedate+' '+t1.operatetime as datetime) begintime,cast(t2.operatedate+' '+t2.operatetime as datetime) endtime,t1.operator from t t1 left join t t2 on t1.requestid=t2.requestid and t1.rn=t2.rn+1
查询结果:
最后时间没按你那种方式显示,你那种到时候算操作时间也麻烦,还不如改成时间日期类型了。
你这样做的话 就这两个表是不行的。
本来就是一对多的关系 你强行的要把其变成一对一的关系那是不可能。
如果你是要在程序里实现可以这样:
001,a,10
001,b,10
001,c,10
写到一个DataTable里
然后循环读取行的第二和第三个值
在写到一个字符串里