sql查询时如何合并两行数据,具体如下。

2025-04-13 14:44:42
推荐回答(1个)
回答1:

看样子像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

查询结果:

最后时间没按你那种方式显示,你那种到时候算操作时间也麻烦,还不如改成时间日期类型了。