birisi aşağıda açıklanan gereksinimi uygulayan fikirlerle yardımcı olabilir.Oracle SQL sorgusu Mantık Grup tarafından tarihi Fark dayalı
Benim gereksinimim, ekran görüntüsünün altına göre birikimli geçmişi koruyan bir hedef tabloya sahip olmaktır.
kaynak/hedef tablo yapısı ve kaynak örnek kayıtları sql kodu için aşağıda bakınız:
CREATE TABLE "XHQ"."SHIFT_LOG" ("SEQUENCE_ID" NUMBER(10,0),
"JOB_ID" NUMBER(10,0),
"START_TS" DATE,
"END_TS" DATE,
"MINIMUM_VALUE" FLOAT(126),
"MAXIMUM_VALUE" FLOAT(126),
"AVERAGE_VALUE" FLOAT(126),
"USERID" NVARCHAR2(80));
Insert into XHQ.SHIFT_LOG (SEQUENCE_ID,JOB_ID,START_TS,END_TS,MINIMUM_VALUE,MAXIMUM_VALUE,AVERAGE_VALUE,USERID) values (10908,12000,to_date('01-MAY-15','DD-MON-RR'),null,null,null,null,'admin');
Insert into XHQ.SHIFT_LOG (SEQUENCE_ID,JOB_ID,START_TS,END_TS,MINIMUM_VALUE,MAXIMUM_VALUE,AVERAGE_VALUE,USERID) values (10825,12000,to_date('29-APR-15','DD-MON-RR'),to_date('01-MAY-15','DD-MON-RR'),null,null,null,'admin');
Insert into XHQ.SHIFT_LOG (SEQUENCE_ID,JOB_ID,START_TS,END_TS,MINIMUM_VALUE,MAXIMUM_VALUE,AVERAGE_VALUE,USERID) values (10800,12000,to_date('29-APR-15','DD-MON-RR'),to_date('29-APR-15','DD-MON-RR'),5,10,7.5,'admin');
Insert into XHQ.SHIFT_LOG (SEQUENCE_ID,JOB_ID,START_TS,END_TS,MINIMUM_VALUE,MAXIMUM_VALUE,AVERAGE_VALUE,USERID) values (10725,10500,to_date('28-APR-15','DD-MON-RR'),to_date('29-APR-15','DD-MON-RR'),4,8,6,'admin');
Insert into XHQ.SHIFT_LOG (SEQUENCE_ID,JOB_ID,START_TS,END_TS,MINIMUM_VALUE,MAXIMUM_VALUE,AVERAGE_VALUE,USERID) values (10625,10500,to_date('27-APR-15','DD-MON-RR'),to_date('27-APR-15','DD-MON-RR'),6,6,6,'admin');
Insert into XHQ.SHIFT_LOG (SEQUENCE_ID,JOB_ID,START_TS,END_TS,MINIMUM_VALUE,MAXIMUM_VALUE,AVERAGE_VALUE,USERID) values (10620,10500,to_date('23-APR-15','DD-MON-RR'),to_date('27-APR-15','DD-MON-RR'),null,null,null,'admin');
Insert into XHQ.SHIFT_LOG (SEQUENCE_ID,JOB_ID,START_TS,END_TS,MINIMUM_VALUE,MAXIMUM_VALUE,AVERAGE_VALUE,USERID) values (10525,10500,to_date('22-APR-15','DD-MON-RR'),to_date('23-APR-15','DD-MON-RR'),null,null,null,'admin');
Insert into XHQ.SHIFT_LOG (SEQUENCE_ID,JOB_ID,START_TS,END_TS,MINIMUM_VALUE,MAXIMUM_VALUE,AVERAGE_VALUE,USERID) values (10510,10500,to_date('18-APR-15','DD-MON-RR'),to_date('20-APR-15','DD-MON-RR'),8,16,8,'admin');
beni ihtiyacının bir bakış vereyim. 10510, Bu değer, 18 apr başladı ve 20 apr kadar koştu etti:
JobID sequenceid gereğince = 10500
düşünün. Başarıyla tamamlandığında, özet olarak ona karşılık gelen min, max, avg değeri elde edilir. Bununla birlikte, sıra numarası 10525'i düşünürsek, 22-nisan ile başladı ve 23-nisan'a kadar devam etti. Ancak bazı şebeke kesintileri nedeniyle birkaç dakika ortada durdu ve tekrar başladı. Bu nedenle, iş eksik olduğu için NULL olarak min, max, avg değerine sahiptir. Yine 27 Nisan'da başka bir ağ sorunu vardı, bu yüzden durduruldu ve tekrar devam etti. Sonunda 27 Nisan'da (sıra numarası: 10625) başarılı bir şekilde tamamlandı ve min, max, avg değeri atandı. dizi kimliğinin 10625, 10620 ve 10525 ihtiyaçlarına ait bu durumda kayıt girdileri olarak
bir istisnası, bir. 10825 ve çıkış ekran aşağıdaki gibi olmalıdır:
Burada sekans kimliğine sahip olmalıdır gruplama.
Eğer herhangi açıklamalar gerekiyorsa bana bildirin.
Zaman ayırdığınız ve değerli önerileriniz için şimdiden teşekkür ederiz.
Eğer MINIMUM_VALUE DEĞİL BOŞ VEYA new_seq_id IS NULL IS (') 1 gibi olduğu, mantıksal operatörlerin yürütme sırasını söyler misiniz) VE end_ts NULL' IS veya 2) 'asgari_değer NULL değil VEYA (new_seq_id IS NULL VE bit_ts IS NULL)' dir. Demek istediğim ilk önce değerlendiriliyor. –
@sql_dummy SQL standardı, örneğin Java, C++ yerine, x OR y AND z' koşulunun değerlendirilme sırasını tanımlamaz. Veri tabanı, herhangi bir değerlendirme sırasını seçmekte serbesttir. SQL bildirim dilidir - Değerlendirmenin sırasını umursamıyorum, sadece şunu beyan ederim: "x OR y AND z" koşulunun doğru olduğu satırları bana ver " – krokodilko
, ancak bu durumu değiştirmeyecek mi? Eğer x doğruysa, y yanlışsa, z durumun yanlış olduğu ve durumun geri döndüğü durumlarda 'durumda1' olduğunu varsayın. –