So che posso confrontare le righe precedenti/successive con LAG
e LEAD
, ma nel confronto che sto facendo; Devo essere in grado di saltare le righe occasionalmente (ma devo ancora riconoscerle)Server SQL: confronto con la prossima X nel gruppo
Specifiche: Sto cercando di tenere traccia dei consulti e dei trasferimenti di caldo e freddo in un ambiente di chiamata. Ogni chiamata ha una chiave univoca e un numero di dipendente crescente per ogni fase. Ha anche le ore di inizio e di fine per ogni segmento della chiamata.
Un consulto è definito come una chiamata che inizia e finisce prima che il segmento precedente non consultivo termini.
Un trasferimento a caldo è uno in cui la fine del segmento precedente è dopo l'inizio del segmento precedente e termina dopo la fine del segmento precedente.
Un trasferimento a freddo è un segmento che inizia dopo la fine del segmento precedente.
Esempio Dati:
topcallid e_created e_terminated empnum EG995GIFM 16:22:40.933 16:29:51.010 1 EG995GIFM 16:25:59.827 16:27:49.027 2 EG995GIFM 16:30:07.453 16:37:44.500 3 EG995GIFM 16:38:01.677 16:59:30.777 4 EG995GIFM 16:59:46.737 17:16:48.397 5 EG995GIFM 17:04:51.243 17:29:21.620 6
output desiderato:
topcallid.......TransStatus
EG995GIFM Consult (Stage 1 To 2)
EG995GIFM Cold Transfer (Stage 1 To 3)
EG995GIFM Cold Transfer (Stage 3 To 4)
EG995GIFM Cold Transfer (Stage 4 To 5)
EG995GIFM Warm Transfer (Stage 5 To 6)
codice attuale, che dà ogni combinazione si confrontano ogni fase a tutto ciò che segue:
SELECT ta.topcallid,
CASE
WHEN ta.e_created < Trans.e_created AND ta.e_terminated > Trans.e_terminated THEN 'Consult (Stage ' + CAST(TA.EmpNum AS VARCHAR(3)) + ' To ' + CAST(Trans.EmpNum AS VARCHAR(3)) + ')'
WHEN ta.e_terminated < Trans.e_created THEN 'Cold Transfer (Stage ' + CAST(TA.EmpNum AS VARCHAR(3)) + ' To ' + CAST(Trans.EmpNum AS VARCHAR(3)) + ')'
WHEN ta.e_terminated > Trans.e_created THEN 'Warm Transfer (Stage ' + CAST(TA.EmpNum AS VARCHAR(3)) + ' To ' + CAST(Trans.EmpNum AS VARCHAR(3)) + ')'
END TransStatus
FROM [TransferTypeAnalysis] TA
JOIN [TransferTypeAnalysis] Trans
ON TA.topcallid = Trans.topcallid
AND ta.empnum < Trans.empnum
ORDER BY
TA.topcallid,
ta.empnum
Non so perché, ma la linea di casi di trasferimento a freddo viene troncata dalla formattazione del codice, non ho modificato la logica del caso, quindi è possibile utilizzare il codice originale – trouta
StackExchange piace pensare di utilizzare HTML in risponde in modo che possa cancellare intere sezioni come un comando html sconosciuto – SeanC
funziona in modo fantastico. Grazie – SeanC