Ajuda construcion de Querie

11/03/2010 - 18:50 por Henrique | Informe spam
Olá
Necessitava de ajuda na construcion de una querie.
Tengo las seguintes Tablas:

Tabla1
Reg ID Nombre Tipo

10 C01 RSE1 Contagem livre
11 C02 RSE2 Contagem Base
12 C03 RSE3 Contagem Mista



Tabla2
Reg ID Data_Hora Contador

1 C01 11-03-2010 17:00 1034
2 C02 11-03-2010 17:00 1456
3 C03 11-03-2010 17:00 1680
4 C01 11-03-2010 17:15 1064
5 C02 11-03-2010 17:15 1476
6 C03 11-03-2010 17:15 1690
7 C01 11-03-2010 17:30 1134
8 C02 11-03-2010 17:30 1556
9 C03 11-03-2010 17:30 1780
10 C01 11-03-2010 17:45 1234
11 C02 11-03-2010 17:45 1656
12 C03 11-03-2010 17:45 1880
13 C01 12-03-2010 18:00 1334
14 C02 12-03-2010 18:00 1756
15 C03 12-03-2010 18:00 1980



Necessito de una Querie que me possa informar del valor del consumo entre
dos fechas o dos horas. El valor del consumo es diferencia entre el valor
final e inicial del contador.


Ano Mês Dia Hora ID Nombre Valor

2010 03 11 17:15 C01 RSE1 30
2010 03 11 17:15 C02 RSE1 20
2010 03 11 17:15 C03 RSE1 10
2010 03 11 17:30 C01 RSE1 100
2010 03 11 17:30 C02 RSE1 100



Gracias

Henrique

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
11/03/2010 - 20:11 | Informe spam
Henrique,

Puedes unir la tabla consigo misma, usando como expresion que los IDs sean
el mismo y que la fecha hora sea la sgte inmediata.

;with r_set as (
select *, row_number() over(partition by id order by data_hora) as rn
from T
)
select T2.*, (T2.contador - T1.contador) as valor
from r_set as T1 inner join r_set as T2
on T1.id = T2.id and T1.rn = T2.rn - 1
GO


AMB
"Henrique" wrote:

Olá
Necessitava de ajuda na construcion de una querie.
Tengo las seguintes Tablas:

Tabla1
Reg ID Nombre Tipo

10 C01 RSE1 Contagem livre
11 C02 RSE2 Contagem Base
12 C03 RSE3 Contagem Mista



Tabla2
Reg ID Data_Hora Contador

1 C01 11-03-2010 17:00 1034
2 C02 11-03-2010 17:00 1456
3 C03 11-03-2010 17:00 1680
4 C01 11-03-2010 17:15 1064
5 C02 11-03-2010 17:15 1476
6 C03 11-03-2010 17:15 1690
7 C01 11-03-2010 17:30 1134
8 C02 11-03-2010 17:30 1556
9 C03 11-03-2010 17:30 1780
10 C01 11-03-2010 17:45 1234
11 C02 11-03-2010 17:45 1656
12 C03 11-03-2010 17:45 1880
13 C01 12-03-2010 18:00 1334
14 C02 12-03-2010 18:00 1756
15 C03 12-03-2010 18:00 1980



Necessito de una Querie que me possa informar del valor del consumo entre
dos fechas o dos horas. El valor del consumo es diferencia entre el valor
final e inicial del contador.


Ano Mês Dia Hora ID Nombre Valor

2010 03 11 17:15 C01 RSE1 30
2010 03 11 17:15 C02 RSE1 20
2010 03 11 17:15 C03 RSE1 10
2010 03 11 17:30 C01 RSE1 100
2010 03 11 17:30 C02 RSE1 100



Gracias

Henrique


.

Respuesta Responder a este mensaje
#2 GirafaBranca
12/03/2010 - 11:52 | Informe spam
Gracias por tu pronta respuesta.

Tengo un contador y necesitan saber quantos pulsos entre las fechas y
los
tiempos?

Porque esta consulta no funciona?


SELECT

Year(Data_Hora) as Ano,
Month(Data_Hora) as Mês,
Day(Data_Hora) as Dia,

(MAX(Contador)- MIN(contador)) as Valor

FROM
contadores

GROUP BY

Day(Data_Hora)


Una tabla más simples Tabla2

Reg ID Data_Hora Contador

1 C01 11-03-2010 17:00 1034
2 C01 11-03-2010 17:15 1064
3 C01 11-03-2010 17:30 1134
4 C01 11-03-2010 17:45 1234
5 C01 12-03-2010 18:00 1334
5 C01 12-03-2010 18:00 1634
5 C01 12-03-2010 18:00 1934


Resultado de la Query

Ano Mês Dia Valor
2010 03 11 200
2010 03 12 600


Gracias





On 11 Mar, 19:11, Alejandro Mesa
wrote:
Henrique,

Puedes unir la tabla consigo misma, usando como expresion que los IDs sean
el mismo y que la fecha hora sea la sgte inmediata.

;with r_set as (
select *, row_number() over(partition by id order by data_hora) as rn
from T
)
select T2.*, (T2.contador - T1.contador) as valor
from r_set as T1 inner join r_set as T2
on T1.id = T2.id and T1.rn = T2.rn - 1
GO

AMB



"Henrique" wrote:
> Olá
> Necessitava de ajuda na construcion de una querie.
> Tengo las seguintes Tablas:

> Tabla1
> Reg        ID        Nombre        Tipo

> 10 C01     RSE1          Contagem livre
> 11 C02     RSE2          Contagem Base
> 12 C03     RSE3          Contagem Mista

> Tabla2
> Reg        ID       Data_Hora              Contador

> 1  C01     11-03-2010 17:00                        1034
> 2  C02     11-03-2010 17:00                        1456
> 3  C03     11-03-2010 17:00        1680
> 4  C01     11-03-2010 17:15        1064
> 5  C02     11-03-2010 17:15                        1476
> 6  C03     11-03-2010 17:15                        1690
> 7  C01     11-03-2010 17:30                        1134
> 8  C02     11-03-2010 17:30                        1556
> 9  C03     11-03-2010 17:30                1780
> 10 C01     11-03-2010 17:45                        1234
> 11 C02     11-03-2010 17:45                1656
> 12 C03     11-03-2010 17:45                        1880
> 13 C01     12-03-2010 18:00                1334
> 14 C02     12-03-2010 18:00        1756
> 15 C03     12-03-2010 18:00                        1980

> Necessito de una Querie que me possa informar del valor del consumo entre
> dos fechas o dos horas. El valor del consumo es diferencia entre el valor
> final e inicial del contador.

>  Ano        Mês           Dia      Hora            ID    Nombre     Valor

> 2010       03      11      17:15           C01     RSE1       30
> 2010       03      11      17:15           C02     RSE1       20
> 2010       03      11      17:15           C03     RSE1       10
> 2010       03      11      17:30           C01     RSE1       100
> 2010       03      11      17:30           C02     RSE1       100

> Gracias

> Henrique

> .- Ocultar texto citado -

- Mostrar texto citado -
Respuesta Responder a este mensaje
#3 Alejandro Mesa
12/03/2010 - 15:41 | Informe spam
GirafaBranca,

Tengo un contador y necesitan saber quantos pulsos entre las fechas y
los tiempos?



No entiendo bien la pregunta, pudieras empandir un poquito lo que deseas
hacer?

Fijate que agrupas por el valor del dia, sin importar año y mes, tomando el
valor minimo y restandolo del maximo, es eso lo que deseas?. Quizas seria
mejor agrupar por ID y dia.

...
group by
ID,
dateadd([day], datediff([day], '19000101', data_hora), '19000101');
GO


En mi primer post puese un ejemplo que calcula la diferencia del contador
entre una lectura y la inmediata anterior. Tambien puedes adaptar el script
para llevar un valor corriente o cumulativo.

AMB


"GirafaBranca" wrote:

Gracias por tu pronta respuesta.

Tengo un contador y necesitan saber quantos pulsos entre las fechas y
los
tiempos?

Porque esta consulta no funciona?


SELECT

Year(Data_Hora) as Ano,
Month(Data_Hora) as Mês,
Day(Data_Hora) as Dia,

(MAX(Contador)- MIN(contador)) as Valor

FROM
contadores

GROUP BY

Day(Data_Hora)


Una tabla más simples Tabla2

Reg ID Data_Hora Contador

1 C01 11-03-2010 17:00 1034
2 C01 11-03-2010 17:15 1064
3 C01 11-03-2010 17:30 1134
4 C01 11-03-2010 17:45 1234
5 C01 12-03-2010 18:00 1334
5 C01 12-03-2010 18:00 1634
5 C01 12-03-2010 18:00 1934


Resultado de la Query

Ano Mês Dia Valor
2010 03 11 200
2010 03 12 600


Gracias





On 11 Mar, 19:11, Alejandro Mesa
wrote:
> Henrique,
>
> Puedes unir la tabla consigo misma, usando como expresion que los IDs sean
> el mismo y que la fecha hora sea la sgte inmediata.
>
> ;with r_set as (
> select *, row_number() over(partition by id order by data_hora) as rn
> from T
> )
> select T2.*, (T2.contador - T1.contador) as valor
> from r_set as T1 inner join r_set as T2
> on T1.id = T2.id and T1.rn = T2.rn - 1
> GO
>
> AMB
>
>
>
> "Henrique" wrote:
> > Olá
> > Necessitava de ajuda na construcion de una querie.
> > Tengo las seguintes Tablas:
>
> > Tabla1
> > Reg ID Nombre Tipo
>
> > 10 C01 RSE1 Contagem livre
> > 11 C02 RSE2 Contagem Base
> > 12 C03 RSE3 Contagem Mista
>
> > Tabla2
> > Reg ID Data_Hora Contador
>
> > 1 C01 11-03-2010 17:00 1034
> > 2 C02 11-03-2010 17:00 1456
> > 3 C03 11-03-2010 17:00 1680
> > 4 C01 11-03-2010 17:15 1064
> > 5 C02 11-03-2010 17:15 1476
> > 6 C03 11-03-2010 17:15 1690
> > 7 C01 11-03-2010 17:30 1134
> > 8 C02 11-03-2010 17:30 1556
> > 9 C03 11-03-2010 17:30 1780
> > 10 C01 11-03-2010 17:45 1234
> > 11 C02 11-03-2010 17:45 1656
> > 12 C03 11-03-2010 17:45 1880
> > 13 C01 12-03-2010 18:00 1334
> > 14 C02 12-03-2010 18:00 1756
> > 15 C03 12-03-2010 18:00 1980
>
> > Necessito de una Querie que me possa informar del valor del consumo entre
> > dos fechas o dos horas. El valor del consumo es diferencia entre el valor
> > final e inicial del contador.
>
> > Ano Mês Dia Hora ID Nombre Valor
>
> > 2010 03 11 17:15 C01 RSE1 30
> > 2010 03 11 17:15 C02 RSE1 20
> > 2010 03 11 17:15 C03 RSE1 10
> > 2010 03 11 17:30 C01 RSE1 100
> > 2010 03 11 17:30 C02 RSE1 100
>
> > Gracias
>
> > Henrique
>
> > .- Ocultar texto citado -
>
> - Mostrar texto citado -

.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida