Zayıf konu satırı için özür dilerim.SQL Query, iş emrinin sırasını gösterir
DÜZENLEME: Burada Sorgu Ben OrderNumbers DÜZENLEMEYİ çoğaltmak DEĞİL sorgu ihtiyacı am OrderNumbers kopyalar: soru Kısaltılmış ve iş emirlerinin tüm kaydını olan bir tablo var bir daha temiz bir soru
sağlanan gerçekleştirildi. iki çeşit emir var. Yüklemeler ve Sorun Aramaları. Sorgum, bir yükleme işleminden sonraki 30 gün içinde gerçekleşen tüm sorun çağrılarını bulmak ve bu sorun çağrısını (TC) doğru Kurulum (IN) ile eşleştirmektir. Bu nedenle, Trouble Call tarihi, kurulumdan sonra ancak en geç 30 gün sonra gerçekleşmelidir. Ek olarak, aynı hesap için iki yükleme ve iki sorun çağrısı varsa, hepsi 30 gün içinde gerçekleşir ve sonuçların bunu yansıtması gerekir. Sorun şu ki, iki farklı yükleme (TC) ve iki farklı yüklemelerle (IN) eşleşen bir yükleme sırası (TC) eşleşen bir yükleme sırası (TC) alıyorum (I)
SQL Fiddle ödeme örneğinde kapatın 1234567810 numaralı sipariş numarasına ve 1234567890 numaralı Trouble Call sipariş numarasına dikkat edin ve sahip olduğum sorunu göreceksiniz. http://sqlfiddle.com/#!3/811df/8
select b.accountnumber,
MAX(b.scheduleddate) as OriginalDate,
b.workordernumber as OriginalOrder,
b.jobtype as OriginalType,
MIN(a.scheduleddate) as NewDate,
a.workordernumber as NewOrder,
a.jobtype as NewType
from (
select workordernumber,accountnumber,jobtype,scheduleddate
from workorders
where jobtype = 'TC'
) a join
(
select workordernumber,accountnumber,jobtype,scheduleddate
from workorders
where jobtype = 'IN'
) b
on a.accountnumber = b.accountnumber
group by b.accountnumber,
b.scheduleddate,
b.workordernumber,
b.jobtype,
a.accountnumber,
a.scheduleddate,
a.workordernumber,
a.jobtype
having MIN(a.scheduleddate) > MAX(b.scheduleddate) and
DATEDIFF(day,MAX(b.scheduleddate),MIN(a.scheduleddate)) < 31
Ben sonuçları gibi görünmek için ne arıyorum örneği. Doğru yolda beni ayarlayabileceğiniz her türlü yardım için teşekkür ederiz.