Pergunta : Como comparar dois campos e baseado em uma comparação verdadeira entrada em um outro campo?

Aprovação, eu tiver uma tabela que tenha DeviceName, OutageType, OutageDate, DownDate, TotalDown.

ColA tenho as entradas múltiplas baseadas em quando outaged acontecido (se a indisponibilidade estava para baixo ou levanta). o
ColB tem o tipo de indisponibilidade para o dispositivo especific no
ColC da cola (outra vez para cima ou para baixo) é a data onde o occurred
ColD da indisponibilidade (em ColB) é a data o dispositivo (na cola) foi o down
ColE é o tempo total (no formato decimal) de que o dispositivo era abaixo (este é um campo precalculated introduzido de um outro certificado) mas unido somente aos campos/fileiras que a tabela do Br/>
The do devicetype='up'< olha como: o
abcd-s-2-01, para baixo, o te>, zero, Null
abcd-s-2-01, acima de, o >, e>, ime>
abcd-s-2-01, para baixo, o te>, zero, Null
abcd-s-2-01, acima de, o >, e>.ime>

Basically um tipo da indisponibilidade de para baixo contem somente o nome de dispositivo, o tipo de indisponibilidade e quando essa indisponibilidade ocorreu.  Um tipo da indisponibilidade de ascendente contem o nome, tipo, data da indisponibilidade, o dispositivo da data foi para baixo, e o tempo onde total era o down

Here é o que eu preciso.  Eu preciso de criar uma tabela nova que contenha: necessidades acima do
TotalDown

The do
DeviceName
DeviceType
DownDate
UpDate (esta é a data em que o devicetype='Up para o dispositivo alistado acima na cola) de ser para somente aqueles dispositivos que estão “para baixo”.  O objetivo da tabela é mostrar que dispositivo foi para baixo e quando, e então quando veio apoio e o tempo total tomou para vir saída da tabela do
The do apoio. deve olhar como: o
abcd-s-2-01, para baixo, o >, , atualização do *where do e> é o outagedate quando o problema que de type=up.

The eu estou tendo está figurando para fora como começ a atualização e o TotalTime.  Eu posso recuperar as primeiras 3 colunas da outra tabela porque aqueles estão listados em uma fileira.  Eu estou tendo problemas tentar recuperar o outageDate e o TotalTime quando Type=Up e introduzi-lo em meu table.

I tentado funcionando duas indicações do strSQL (uma onde outagetype=down e a outro onde outagetype=up) e comparo DeviceName mas a segunda pergunta do SQL (onde type=up) não produz os mesmos dados do devicename.  Por exemplo: o

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

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

as que você pode ver, SQL2 tem uma entrada extra que não esteja em resultados da pergunta SQL1.  Quando eu fizer um recordset para comparar os dois nomes de dispositivo (objRS.Fields =objRS1.Fields (name)) Eu começ valores nulos toda sobre o lugar ou nada becaue quando SQL2 o <> SQL1 ele suja acima o descanso do código que simples do recordset Loop.

The eu tenho sou: o
objRS = SQL1
objRS1=SQL2
Do até que o objRS de objRS.EOF
if (nome) = o up_date do
then = (outagedate) o else
up_date = null

This trabalhe o unitl mim começ ao ponto onde há uns resultados extra de SQL2 que não comparam a SQL1 (ou reciprocamente).

Is lá uma maneira não tão complicada de conseguir isto em VB? Eu tenho tentado fazê-lo por dois dias e eu estou batendo um block.

If que você precisa mais claridade me deixa know.
class= do

Resposta : Como comparar dois campos e baseado em uma comparação verdadeira entrada em um outro campo?

Suposição tendo estes dados em sua tabela
devicename, outagetype, downdate, outagedate, totaltime
acbd-s-2-1 TRAGAM o 15:00 2010-05-05: 00.000 ZERO NULO
acbd-s-2-1 LEVANTAM o 15:00 2010-05-05: 00.000 18:15 2010-05-05: 00.000 3.25
acbd-s-2-1 TRAGAM o 13:00 2010-05-06: 00.000 ZERO NULO
acbd-s-2-1 LEVANTAM o 13:00 2010-05-06: 00.000 13:45 2010-05-06: 00.000 0.75
acbd-s-2-1 TRAGAM o 11:00 2010-05-10: 00.000 ZERO NULO
xyz-b-23-1 TRAGAM o 12:12 2010-04-05: 00.000 ZERO NULO
xyz-b-23-1 LEVANTAM o 12:12 2010-04-05: 00.000 13:15 2010-04-05: 00.000 1.01
xyz-b-23-1 TRAGAM o 11:00 2010-05-05: 00.000 ZERO NULO
xyz-b-23-1 LEVANTAM o 11:00 2010-05-05: 00.000 14:05 2010-05-05: 00.000 3.02
xyz-b-23-1 TRAGAM o 11:15 2010-05-06: 00.000 ZERO NULO

se você funcionou esta pergunta
selecionar A.*, B.* de
(selecionar * do tblOutage onde OutageType = “para baixo ") A
interno juntar-se
(SELECIONAR * do tblOutage onde OutageType = “acima ") B
em A.Devicename=B.Devicename E em A.downdate=b.downdate

você tem este resultado
devicename        outagetype   downdate                outagedate  totaltime  devicename    outagetype   downdate                outagedate              totaltime
----------------- ------------ ----------------------- ----------- ---------- ------------- ------------ ----------------------- ----------------------- ------------
acbd-s-2-1 TRAGAM o 15:00 2010-05-05: 00.000 O ZERO NULO acbd-s-2-1 LEVANTA o 15:00 2010-05-05: 00.000 18:15 2010-05-05: 00.000 3.25
acbd-s-2-1 TRAGAM o 13:00 2010-05-06: 00.000 O ZERO NULO acbd-s-2-1 LEVANTA o 13:00 2010-05-06: 00.000 13:45 2010-05-06: 00.000 0.75
xyz-b-23-1 TRAGAM o 11:00 2010-05-05: 00.000 O ZERO NULO xyz-b-23-1 LEVANTA o 11:00 2010-05-05: 00.000 14:05 2010-05-05: 00.000 3.02
xyz-b-23-1 TRAGAM o 12:12 2010-04-05: 00.000 O ZERO NULO xyz-b-23-1 LEVANTA o 12:12 2010-04-05: 00.000 13:15 2010-04-05: 00.000 1.01

(4 fileiras afetadas)


Outras soluções  
 
programming4us programming4us