Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

consulta sql count(*) ?????

Estas en el tema de consulta sql count(*) ????? en el foro de SQL Server en Foros del Web. hola amigos del foro, quisiera consultarles a los gurus del sql, yo aprendiendo esto mi dudas es:quiero realizar una consulta que me sume unos datos ...
  #1 (permalink)  
Antiguo 29/07/2008, 09:42
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
consulta sql count(*) ?????

hola amigos del foro, quisiera consultarles a los gurus del sql, yo aprendiendo esto
mi dudas es:quiero realizar una consulta que me sume unos datos
ejemplo:
select PAB_TEC_TecGral , count(*)
from PAB_Solicitud s, PAB_Tecnicas t, ATE_Prestacion p
where ATE_PRE_FechaEntre >= '01/01/2008'
and ATE_PRE_FechaEntre < '01/02/2008'
and ATE_PRE_TipoFormu = '13'
and ATE_PRE_Vigencia = 'V'
and ATE_PRE_TipoMovim = 'I'
and ATE_PRE_CorrSocio = 0
and s.PAB_SOL_Numero = p.ATE_PRE_NumerFormu
and s.PAB_SOL_Estado = 'R'
and t.PAB_SOL_Numero = s.PAB_SOL_Numero
and PAB_TEC_TecGral = '1'
group by PAB_TEC_TecGral

esto resulta bien, meda 0 = 1 1=3 donde el cero puede representar a perros y el uno a gatos
bueno lo que quiero hacer es

select PAB_TEC_TecGral, PAB_TEC_TecRegion, PAB_TEC_TecLocal, PAB_TEC_Plexo, PAB_TEC_Bloqueo, PAB_TEC_Peridural,PAB_TEC_Raquidea
from PAB_Solicitud s, PAB_Tecnicas t, ATE_Prestacion p
where ATE_PRE_FechaEntre >= 01/01/2008
and ATE_PRE_FechaEntre < 01/02/2008
and ATE_PRE_TipoFormu = '13'
and ATE_PRE_Vigencia = 'V'
and ATE_PRE_TipoMovim = 'I'
and ATE_PRE_CorrSocio = 0
and s.PAB_SOL_Numero = p.ATE_PRE_NumerFormu
and s.PAB_SOL_Estado = 'R'
and t.PAB_SOL_Numero = s.PAB_SOL_Numero

pero que me cuente todos los datos de los campos PAB_TEC_TecGral, PAB_TEC_TecRegion, PAB_TEC_TecLocal, PAB_TEC_Plexo, PAB_TEC_Bloqueo, PAB_TEC_Peridural,PAB_TEC_Raquidea

PAB_TEC_TecRegion PAB_TEC_TecLocal .................
3 8

gracias de ante mano
  #2 (permalink)  
Antiguo 29/07/2008, 10:28
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: consulta sql count(*) ?????

Varias observaciones

Las fechas, siempre manejalas en formato ANSI: yyyymmdd >= '20080101'
Utiliza JOIN explicito, no se lo dejes al motor de base de datos.
FROM PAB_Solicitud s JOIN ATE_Prestacion p ON s.PAB_SOL_Numero = p.ATE_PRE_NumerFormu

Solo debes hacer un SUM de tus columnas y agruparlas por el (los) campo(s) en cuestion.
  #3 (permalink)  
Antiguo 29/07/2008, 12:51
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: consulta sql count(*) ?????

hola iislas, gracias por contestar tan rapido, en mi primera ves que me incorporo a un foro.

sigo son la duda

lo que quiero es sabe cuantos 1 tengo por cada columna (el 1 representa que fue dada la prestación y el 0 indica que no fue dada la prestación)

ESTAS SON LAS PRESTACIONES

select PAB_TEC_TecGral, PAB_TEC_TecRegion, PAB_TEC_TecLocal, PAB_TEC_Plexo, PAB_TEC_Bloqueo, PAB_TEC_Peridural,PAB_TEC_Raquidea

QUE ESTAN DEFINIDAS COMO CHAR
  #4 (permalink)  
Antiguo 29/07/2008, 13:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: consulta sql count(*) ?????

Debes hacer un simple COUNT(campo), asi de simple y agrupar por las columnas, solo eso....

Ahora, si la columna en cuestion, trae un 1 o 0, como te dije, utiliza un CASE

SUM(CASE WHEN PAB_TEC_TecGral = 1 then 1 else 0 end) as PAB_TEC_TecGral
  #5 (permalink)  
Antiguo 29/07/2008, 13:36
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: consulta sql count(*) ?????

disculpa la porfiades jejejeje pero mira
aplicar un simple count es fasil cuando es asi

select count(PAB_TEC_Peridural)
from PAB_Solicitud s, PAB_Tecnicas t, ATE_Prestacion p
where ATE_PRE_FechaEntre >= '01/02/2008'
and ATE_PRE_FechaEntre < '01/05/2008'
and ATE_PRE_TipoFormu = '13'
and ATE_PRE_Vigencia = 'V'
and ATE_PRE_TipoMovim = 'I'
and ATE_PRE_CorrSocio = 0
and s.PAB_SOL_Numero = p.ATE_PRE_NumerFormu
and s.PAB_SOL_Estado = 'R'
and t.PAB_SOL_Numero = s.PAB_SOL_Numero
and PAB_TEC_Peridural ='1'


pero cuandos son mas campos a parte de PAB_TEC_Peridural ( otros ATE_PRE_Codigo,PAB_TEC_TecGral, PAB_TEC_TecRegion, PAB_TEC_TecLocal, PAB_TEC_Plexo, PAB_TEC_Bloqueo, PAB_TEC_Peridural,PAB_TEC_Raquidea)

y darle la condicion where de 1 a todos ellos???

sorry si no te entiendo o no me explico bien
  #6 (permalink)  
Antiguo 30/07/2008, 10:59
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: consulta sql count(*) ?????

Asi debería funcionar:
Código:
select
SUM(CASE WHEN PAB_TEC_Peridural = 1 then 1 else 0 end) [PAB_TEC_Peridural],
SUM(CASE WHEN PAB_TEC_TecGral = 1 then 1 else 0 end) [PAB_TEC_TecGral],
SUM(CASE WHEN PAB_TEC_TecRegion = 1 then 1 else 0 end) [PAB_TEC_TecRegion],
SUM(CASE WHEN PAB_TEC_TecLocal = 1 then 1 else 0 end) [PAB_TEC_TecLoca],
SUM(CASE WHEN PAB_TEC_Plexo = 1 then 1 else 0 end) [PAB_TEC_Plexo],
SUM(CASE WHEN PAB_TEC_Bloqueo = 1 then 1 else 0 end) [PAB_TEC_Bloqueo],
SUM(CASE WHEN PAB_TEC_Raquidea = 1 then 1 else 0 end) [PAB_TEC_Raquidea]
from PAB_Solicitud s
inner join PAB_Tecnicas t on s.PAB_SOL_Numero=t.PAB_SOL_Numero and s.PAB_SOL_Numero=t.PAB_SOL_Numero
inner join ATE_Prestacion p on s.PAB_SOL_Numero=p.ATE_PRE_NumerFormu
where ATE_PRE_FechaEntre >= '01/02/2008'
and ATE_PRE_FechaEntre < '01/05/2008'
and ATE_PRE_TipoFormu = '13'
and ATE_PRE_Vigencia = 'V'
and ATE_PRE_TipoMovim = 'I'
and ATE_PRE_CorrSocio = 0
and s.PAB_SOL_Estado = 'R'
and PAB_TEC_Peridural ='1'
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 30/07/2008, 13:04
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: consulta sql count(*) ?????

gracias muchachos, ya soluciones el problemas

cree un procedimiento almacenado con cursores


Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:07.