Pytanie : Dlaczego porównywać dwa pole i opierać się na Prawdziwy porównanie wkład w inny pole?

Ok, I mieć stół który mieć DeviceName, OutageType, OutageDate, DownDate, TotalDown.

ColA mieć wieloskładnikowy wejście opierać się na gdy outaged (czy przerwa być puszek lub up).
ColB mieć the typ przerwa dla the precyzować przyrząd w Kola (znowu Znowu)
ColC być the data the przerwa (w ColB) occurred
ColD być the data the przyrząd (w Kola) pójść down
ColE być the sumaryczny czas (w dziesiątkowy format) który the przyrząd być puszek (

The stołowy spojrzenie lubić:
abcd-s-2-01, Puszek, te>, Nieobowiązujący, Null
abcd-s-2-01, W Górę, >, e>, ime>
abcd-s-2-01, Puszek, te>, Nieobowiązujący, Null
abcd-s-2-01, W Górę, >, e>.ime>

Basically przerwa typ Puszek tylko zawierać the przyrząd imię, the typ przerwa i gdy ten przerwa zdarzać się.  Przerwa typ Up zawierać the imię, typ, data przerwa, daktylowy przyrząd pójść puszek, i the sumaryczny czas ono być down

Here być co I potrzebować.  I potrzebować nowy stół który zawierać:
DeviceName
DeviceType
DownDate
UpDate (który być the data w che the devicetype='Up' dla the przyrząd spisywać spisywać w Kola)
TotalDown

The nad potrzeba dla tylko tamte przyrząd który być "Puszek".  The cel the stół być jaki przyrząd pójść puszek i gdy, i wtedy gdy ono przychodzić wsparcie i the sumaryczny czas ono wziąć powrót - sumaryczny.
The stołowy wydajność musieć jak:
abcd-s-2-01, Puszek, >, , e> *where aktualizacja być the outagedate gdy type=up.

The kłopot I mieć obliczać totalTime dlaczego the Aktualizacja i TotalTime.  I móc the pierwszy 3 kolumna od the inny stół ponieważ kolumna spisywać na jeden rząd.  I mieć problem the outageDate i TotalTime gdy Type=Up i ono w mój nowy table.

I próbować biegać dwa strSQL oświadczenie (jeden dokąd outagetype=down i the jeden dokąd outagetype=up) i porównywać DeviceName ale the drugi SQL Zapytanie (dokąd type=up) produkować the ten sam devicename dane.  Na przykład:

SQL1 produkować:
devicename, outagetype, downdate
abcd-s-2-1, Puszek, 2010-06-01 17:00: 37
abcd-s-2-1, Puszek, 2010-06-01 19:00: 15
xyz-s-2-1, Puszek, 2010-06-01 18:00: 01
xyz-s-2-1, Puszek, 2010-06-05 07:05: 49
xyz-s-2-1, Puszek, 2010-06-10 12:15: 56

SQL2 produkować:
devicename, outagetype, downdate, outagedate, totaltime
abcd-s-2-1, W GÓRĘ, 2010-06-01 17:00: 37, 2010-06-01 17:15: 00, 0.23
abcd-s-2-1, W GÓRĘ, 2010-06-01 19:00: 15, 2010-06-01 19:30: 18, 0.51
xyz-s-2-1, W GÓRĘ, 2010-06-01 18:00: 01, 2010-06-01 19:00: 00, 1.00
xyz-s-2-1, W GÓRĘ, 2010-06-05 07:05: 49, 2010-06-05 09:35: 25, 2.50
xyz-s-2-1, W GÓRĘ, 2010-06-10 12:15: 56, 2010-06-11 11:10: 10, 22.90
xyz-s-2-1, W GÓRĘ, 2010-06-06 10:22: 00, 2010-06-07 01:11: 41, 20.85

as ty móc, SQL2 mieć ekstra wejście który być w SQL1 zapytanie rezultat.  Gdy I robić recordset the dwa przyrząd imię (objRS.Fields (imię) =objRS1.Fields (name)) I dostawać nieobowiązujący wartość po całym the miejsce lub bałaganić becaue gdy SQL2 <> SQL1 ono bałaganić w górę the odpoczynek the recordset Loop.

The prosty kod I mieć być:
objRS = SQL1
objRS1=SQL2
Do until objRS.EOF
if objRS (imię) = objRS1 (imię)
then up_date = objRS1 (outagedate) else
up_date = null

This pracować unitl I dostawać the punkt dokąd tam  być ekstra rezultat od SQL2 który porównywać SQL1 (lub wice versa).

Is tam  w ten sposób skomplikowany sposób nie w VB? I próbować ono dla dwa dzień i I uderzać umysłowy block.

If ty potrzebować więcej klarowność pozwalać know.

Odpowiedź : Dlaczego porównywać dwa pole i opierać się na Prawdziwy porównanie wkład w inny pole?

Mieć ten dane w twój stół
devicename, outagetype, downdate, outagedate, totaltime
acbd-s-2-1 PUSZEK 2010-05-05 15:00: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY
acbd-s-2-1 UP 2010-05-05 15:00: 00.000 2010-05-05 18:15: 00.000 3.25
acbd-s-2-1 PUSZEK 2010-05-06 13:00: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY
acbd-s-2-1 UP 2010-05-06 13:00: 00.000 2010-05-06 13:45: 00.000 0.75
acbd-s-2-1 PUSZEK 2010-05-10 11:00: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY
xyz-b-23-1 PUSZEK 2010-04-05 12:12: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY
xyz-b-23-1 UP 2010-04-05 12:12: 00.000 2010-04-05 13:15: 00.000 1.01
xyz-b-23-1 PUSZEK 2010-05-05 11:00: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY
xyz-b-23-1 UP 2010-05-05 11:00: 00.000 2010-05-05 14:05: 00.000 3.02
xyz-b-23-1 PUSZEK 2010-05-06 11:15: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY

jeżeli ty biegać ten zapytanie
wybrany A.*, B.* od
(wybiórka * od tblOutage dokąd OutageType = "Puszek ") A
wewnętrzny łączyć
(WYBIÓRKA * od tblOutage dokąd OutageType = "B ") B
na A.Devicename=B.Devicename I A.downdate=b.downdate

ty mieć ten rezultat
devicename        outagetype   downdate                outagedate  totaltime  devicename    outagetype   downdate                outagedate              totaltime
----------------- ------------ ----------------------- ----------- ---------- ------------- ------------ ----------------------- ----------------------- ------------
acbd-s-2-1 PUSZEK 2010-05-05 15:00: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY acbd-s-2-1 UP 2010-05-05 15:00: 00.000 2010-05-05 18:15: 00.000 3.25
acbd-s-2-1 PUSZEK 2010-05-06 13:00: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY acbd-s-2-1 UP 2010-05-06 13:00: 00.000 2010-05-06 13:45: 00.000 0.75
xyz-b-23-1 PUSZEK 2010-05-05 11:00: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY xyz-b-23-1 UP 2010-05-05 11:00: 00.000 2010-05-05 14:05: 00.000 3.02
xyz-b-23-1 PUSZEK 2010-04-05 12:12: 00.000 NIEOBOWIĄZUJĄCY NIEOBOWIĄZUJĄCY xyz-b-23-1 UP 2010-04-05 12:12: 00.000 2010-04-05 13:15: 00.000 1.01

(4 rząd wpływać)


Inne rozwiązania  
 
programming4us programming4us