modificacion consulta

31/10/2005 - 10:06 por Sonia | Informe spam
Tengo una consulta en sql donde saco para cada operadora, el num de
registros q tiene en una tabla, dadas 2 fechas.

La consulta es esta:

select telemarketing.operad, count(*) as num_muestras

from telemarketing

where (((telemarketing.fechas) between [desde] and [hasta]))

group by telemarketing.operad;

la tabla q gasto esta formada de esta manera:

fechas|operad|escritura|lectura|matematicas...

y ahora necesito ahcer lo mismo que tenia, pero desglosarlo en materias. Y
lo q no se es como contar solo los campos q no esten vacios, ya q habia
hecho el intento de hacerlo con la escritura de esta manera, pero me cueta
tb los campos vacios:

select telemarketing.operad, count(xescr1) as escritura, count(*) as
num_muestras

from telemarketing

where (((telemarketing.fechas) between [desde] and [hastal]))

group by telemarketing.operad;

sabeis como puedo resolver esto?

Gracias!

Preguntas similare

Leer las respuestas

#1 Miguel Egea
31/10/2005 - 10:18 | Informe spam
Puedes intentar usar algo así

Select telemarketing.operad, sum ( case when UnCampo is null then 0 else 1
end )
from Telemarketing
group by operad.

Espero que te sirva

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"


"Sonia" wrote in message
news:

Tengo una consulta en sql donde saco para cada operadora, el num de
registros q tiene en una tabla, dadas 2 fechas.

La consulta es esta:

select telemarketing.operad, count(*) as num_muestras

from telemarketing

where (((telemarketing.fechas) between [desde] and [hasta]))

group by telemarketing.operad;

la tabla q gasto esta formada de esta manera:

fechas|operad|escritura|lectura|matematicas...

y ahora necesito ahcer lo mismo que tenia, pero desglosarlo en materias. Y
lo q no se es como contar solo los campos q no esten vacios, ya q habia
hecho el intento de hacerlo con la escritura de esta manera, pero me cueta
tb los campos vacios:

select telemarketing.operad, count(xescr1) as escritura, count(*) as
num_muestras

from telemarketing

where (((telemarketing.fechas) between [desde] and [hastal]))

group by telemarketing.operad;

sabeis como puedo resolver esto?

Gracias!



Respuesta Responder a este mensaje
#2 Alejandro Mesa
31/10/2005 - 15:17 | Informe spam
Miguel,

La operacion:

sum ( case when UnCampo is null then 0 else 1 end )

es equivalente a:

count(UnCampo)

Ejemplo:

select
count(c1) as c2,
sum(case when c1 is null then 0 else 1 end) as c3
from
(
select cast(null as int)
union all
select 1
union all
select 2
) as t1(c1)
go

No entiendo bien lo que sonia trata de hacer o por que dice que no le sirve
usar count(nombre_columna).


AMB

"Miguel Egea" wrote:

Puedes intentar usar algo así

Select telemarketing.operad, sum ( case when UnCampo is null then 0 else 1
end )
from Telemarketing
group by operad.

Espero que te sirva

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"


"Sonia" wrote in message
news:
>
> Tengo una consulta en sql donde saco para cada operadora, el num de
> registros q tiene en una tabla, dadas 2 fechas.
>
> La consulta es esta:
>
> select telemarketing.operad, count(*) as num_muestras
>
> from telemarketing
>
> where (((telemarketing.fechas) between [desde] and [hasta]))
>
> group by telemarketing.operad;
>
> la tabla q gasto esta formada de esta manera:
>
> fechas|operad|escritura|lectura|matematicas...
>
> y ahora necesito ahcer lo mismo que tenia, pero desglosarlo en materias. Y
> lo q no se es como contar solo los campos q no esten vacios, ya q habia
> hecho el intento de hacerlo con la escritura de esta manera, pero me cueta
> tb los campos vacios:
>
> select telemarketing.operad, count(xescr1) as escritura, count(*) as
> num_muestras
>
> from telemarketing
>
> where (((telemarketing.fechas) between [desde] and [hastal]))
>
> group by telemarketing.operad;
>
> sabeis como puedo resolver esto?
>
> Gracias!
>
>
>



Respuesta Responder a este mensaje
#3 Miguel Egea
31/10/2005 - 15:42 | Informe spam
Así es Alejandro, mil gracias por la puntualización, no se en que estaba
pensando, hoy contesté varias preguntas basadas en lo mismo y esto de tener
tantos días seguidos de fiesta en españa me está matando :p.

Gracias

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"

"Alejandro Mesa" wrote in message
news:
Miguel,

La operacion:

sum ( case when UnCampo is null then 0 else 1 end )

es equivalente a:

count(UnCampo)

Ejemplo:

select
count(c1) as c2,
sum(case when c1 is null then 0 else 1 end) as c3
from
(
select cast(null as int)
union all
select 1
union all
select 2
) as t1(c1)
go

No entiendo bien lo que sonia trata de hacer o por que dice que no le
sirve
usar count(nombre_columna).


AMB

"Miguel Egea" wrote:

Puedes intentar usar algo así

Select telemarketing.operad, sum ( case when UnCampo is null then 0 else
1
end )
from Telemarketing
group by operad.

Espero que te sirva

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced
education
and solutions for the entire Microsoft database platform"


"Sonia" wrote in message
news:
>
> Tengo una consulta en sql donde saco para cada operadora, el num de
> registros q tiene en una tabla, dadas 2 fechas.
>
> La consulta es esta:
>
> select telemarketing.operad, count(*) as num_muestras
>
> from telemarketing
>
> where (((telemarketing.fechas) between [desde] and [hasta]))
>
> group by telemarketing.operad;
>
> la tabla q gasto esta formada de esta manera:
>
> fechas|operad|escritura|lectura|matematicas...
>
> y ahora necesito ahcer lo mismo que tenia, pero desglosarlo en
> materias. Y
> lo q no se es como contar solo los campos q no esten vacios, ya q habia
> hecho el intento de hacerlo con la escritura de esta manera, pero me
> cueta
> tb los campos vacios:
>
> select telemarketing.operad, count(xescr1) as escritura, count(*) as
> num_muestras
>
> from telemarketing
>
> where (((telemarketing.fechas) between [desde] and [hastal]))
>
> group by telemarketing.operad;
>
> sabeis como puedo resolver esto?
>
> Gracias!
>
>
>



Respuesta Responder a este mensaje
#4 Alejandro Mesa
31/10/2005 - 17:10 | Informe spam
Miguel Egea,

En ambos casos (count(UnCampo) o sum(case when UnCampo ...)) Sonia obtendra
los mismos resultados, asi que no hay que preocuparse mucho.

En cuanto a las fiestas, pues nada hombre, ha disfrutar. La vida no puede
ser solo t-sql.

Saludos,

Alejandro Mesa

"Miguel Egea" wrote:

Así es Alejandro, mil gracias por la puntualización, no se en que estaba
pensando, hoy contesté varias preguntas basadas en lo mismo y esto de tener
tantos días seguidos de fiesta en españa me está matando :p.

Gracias

Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"

"Alejandro Mesa" wrote in message
news:
> Miguel,
>
> La operacion:
>
> sum ( case when UnCampo is null then 0 else 1 end )
>
> es equivalente a:
>
> count(UnCampo)
>
> Ejemplo:
>
> select
> count(c1) as c2,
> sum(case when c1 is null then 0 else 1 end) as c3
> from
> (
> select cast(null as int)
> union all
> select 1
> union all
> select 2
> ) as t1(c1)
> go
>
> No entiendo bien lo que sonia trata de hacer o por que dice que no le
> sirve
> usar count(nombre_columna).
>
>
> AMB
>
> "Miguel Egea" wrote:
>
>> Puedes intentar usar algo así
>>
>> Select telemarketing.operad, sum ( case when UnCampo is null then 0 else
>> 1
>> end )
>> from Telemarketing
>> group by operad.
>>
>> Espero que te sirva
>>
>> Miguel Egea
>> Visita mi web http://www.portalsql.com
>> SQL Server MVP, Mentor
>> Solid Quality Learning
>> http://www.SolidQualityLearning.com
>> "Solid Quality Learning is the trusted global provider of advanced
>> education
>> and solutions for the entire Microsoft database platform"
>>
>>
>> "Sonia" wrote in message
>> news:
>> >
>> > Tengo una consulta en sql donde saco para cada operadora, el num de
>> > registros q tiene en una tabla, dadas 2 fechas.
>> >
>> > La consulta es esta:
>> >
>> > select telemarketing.operad, count(*) as num_muestras
>> >
>> > from telemarketing
>> >
>> > where (((telemarketing.fechas) between [desde] and [hasta]))
>> >
>> > group by telemarketing.operad;
>> >
>> > la tabla q gasto esta formada de esta manera:
>> >
>> > fechas|operad|escritura|lectura|matematicas...
>> >
>> > y ahora necesito ahcer lo mismo que tenia, pero desglosarlo en
>> > materias. Y
>> > lo q no se es como contar solo los campos q no esten vacios, ya q habia
>> > hecho el intento de hacerlo con la escritura de esta manera, pero me
>> > cueta
>> > tb los campos vacios:
>> >
>> > select telemarketing.operad, count(xescr1) as escritura, count(*) as
>> > num_muestras
>> >
>> > from telemarketing
>> >
>> > where (((telemarketing.fechas) between [desde] and [hastal]))
>> >
>> > group by telemarketing.operad;
>> >
>> > sabeis como puedo resolver esto?
>> >
>> > Gracias!
>> >
>> >
>> >
>>
>>
>>



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