2016-11-19 4 views
0

berechnet wird Ich habe eine Tabelle, die Anrufdaten eingefügt hat. Jetzt möchte ich picktime und in der Nähe Uhrzeit des Anrufs berechnenMöchten Sie eine neue Spalte hinzufügen, die aus der vorhandenen Spalte

Create table calldata 
(
    calldate Datetime, 
    picktime datetime, 
    status varchar(50) 
) 

insert into calldata 
values('2016-11-18 04:43:37 PM','2016-11-18 04:43:57 PM','ATTENDED') 

insert into calldata 
values('2016-11-18 04:43:37 PM','2016-11-18 04:44:25 PM','ESCALATED') 

insert into calldata 
values('2016-11-18 04:43:37 PM','2016-11-18 04:49:52 PM','ESCALATED') 

insert into calldata 
values('2016-11-18 04:43:37 PM','2016-11-18 04:50:20 PM','CLOSED') 

select * from calldata 

Ausgang:

calldate    | picktime     | status 
-------------------------------------------------------------- 
2016-11-18 16:43:37.000 | 2016-11-18 16:43:57.000 | ATTENDED 
2016-11-18 16:43:37.000 | 2016-11-18 16:44:25.000 | ESCALATED 
2016-11-18 16:43:37.000 | 2016-11-18 16:49:52.000 | ESCALATED 
2016-11-18 16:43:37.000 | 2016-11-18 16:50:20.000 | CLOSED 

Jetzt möchte ich Daten wie folgt aus obiger Tabelle:

calldate    | picktime     | CloseTime    | status 
------------------------------------------------------------------------------------------- 
2016-11-18 16:43:37.000 | 2016-11-18 16:43:57.000 | 2016-11-18 16:44:25.000 | ATTENDED 
2016-11-18 16:43:37.000 | 2016-11-18 16:44:25.000 | 2016-11-18 16:49:52.00 | ESCALATED 
2016-11-18 16:43:37.000 | 2016-11-18 16:49:52.000 | 2016-11-18 16:50:20.00 | CLOSED 
2016-11-18 16:43:37.000 | 2016-11-18 16:50:20.000 |       | CLOSED 
+0

Sind Sie sicher, dass Sie die close_time als picktime des nächsten Anruf möchten? –

+0

nicht für den nächsten Anruf, wollen close_time für den gleichen Anruf von einem bestimmten Handy keine – mansi

+0

Diese Daten sind für nur eine Nr. Ich möchte das gleiche für verschiedene mobile nos – mansi

Antwort

3

so etwas?

LEAD(picktime, 1, null) OVER (PARTITION BY calldate ORDER BY picktime)? 

Es wird die nächste Pictime für den gleichen calldate.

0
Begin Tran 

Create table calldata (calldate Datetime,picktime datetime,status varchar(50)) 

insert into calldata values('2016-11-18 04:43:37 PM','2016-11-18 04:43:57 PM','ATTENDED') 
insert into calldata values('2016-11-18 04:43:37 PM','2016-11-18 04:44:25 PM','ESCALATED') 
insert into calldata values('2016-11-18 04:43:37 PM','2016-11-18 04:49:52 PM','ESCALATED') 
insert into calldata values('2016-11-18 04:43:37 PM','2016-11-18 04:50:20 PM','CLOSED') 


select calldate,picktime,LEAD(picktime,1) OVER (ORDER BY picktime)as CloseTime,status from calldata 
RollBack Tran 
0

Mit Subqueries ist Live einfach:

select *, 
    (
    select top 1 d.picktime from calldata d 
    where d.picktime > c.picktime 
    order by d.picktime asc) previous_picktime 
from calldata c 

Diese qry tun die gleiche Arbeit wie LEAD Ranking-Funktion (aber ich prefere Verwendung subqry weil LEAD existiert nicht auf früheren Versionen (zB MSSQL 2008 R2).

Wenn Sie Spalte hinzufügen möchten ist es am besten Weg, dies in den Blick hinzuzufügen.

Verwandte Themen