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

[SOLUCIONADO] count de registros donde no coincidan 3 campos

Estas en el tema de count de registros donde no coincidan 3 campos en el foro de SQL Server en Foros del Web. Hola, compañeros! Tengo un problema con un count, por ejemplo, tengo una tabla con los campos id_empresa, id_obra e id_ordentrabajo mas otros campos, de esa ...
  #1 (permalink)  
Antiguo 22/01/2014, 16:28
 
Fecha de Ingreso: julio-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
count de registros donde no coincidan 3 campos

Hola, compañeros!

Tengo un problema con un count, por ejemplo, tengo una tabla con los campos id_empresa, id_obra e id_ordentrabajo mas otros campos, de esa tabla tengo 3 registros donde los 3 campos que menciono coinciden, es decir, los 3 registros tienen 1, 11 y 4 respectivamente, y quiero hacer un count donde esos 3 registros me los cuente por 1. Probé lo siguiente:

select count(distinct id_empresa, id_obra, id_ordentrabajo)

pero marca error, sólo me lo acepta con un campo. como sigue:

select count(distinct id_empresa)

sin embargo así no hace lo que quiero que haga. ¿Alguna idea de cómo hacerlo? Les agradecería mucho su ayuda :)
  #2 (permalink)  
Antiguo 22/01/2014, 16:36
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: count de registros donde no coincidan 3 campos

Espero haber comprendido

SELECT COUNT(*), campos id_empresa, id_obra , id_ordentrabajo
FROM tutabla
GROUP BY campos id_empresa, id_obra, id_ordentrabajo
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 22/01/2014, 16:47
 
Fecha de Ingreso: julio-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: count de registros donde no coincidan 3 campos

Así es, pero ocupo que sean distintos, así me traería 3 según el ejemplo que doy y quiero que salga 1
  #4 (permalink)  
Antiguo 22/01/2014, 17:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: count de registros donde no coincidan 3 campos

si te entendi bien podrias hacerlo con esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. id INT,
  3. id1 INT,
  4. id2 INT,
  5. otro_valor VARCHAR(20)
  6. )
  7.  
  8. INSERT INTO #temp VALUES (1,11,4,'otro')
  9. INSERT INTO #temp VALUES (1,2,3,'aqui')
  10. INSERT INTO #temp VALUES (4,5,6,'aqui otro')
  11.  
  12.  
  13. SELECT CASE WHEN (id=1 AND id1=11 AND id2=4) THEN COUNT(1) END AS conteo,otro_valor FROM #temp GROUP BY id,id1,id2,otro_valor

si no es asi puedes poner un ejemplo de tus datos :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 22/01/2014, 17:18
 
Fecha de Ingreso: julio-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: count de registros donde no coincidan 3 campos

Tabla1

Empresa Obra OT Comprador ...
1 11 4 2
1 11 6 1
1 36 10 2

Tabla2

Empresa Obra OT OTCotizacion
1 11 4 1
1 11 4 2
1 11 4 3
1 36 10 1
1 36 10 2

Un registro de la tabla 1 puede tener varias cotizaciones o ninguna que se guardan en la tabla 2. Si quiero saber cuantos registros de la tabla 1 que tengan asignado al comprador 2 tienen cotizaciones?

La respuesta debe ser 2 porque hay 2 registros en la tabla 1 que tienen asignado al comprador 2 y ambas tienen cotizaciones. No sé si me explico
  #6 (permalink)  
Antiguo 22/01/2014, 22:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: count de registros donde no coincidan 3 campos

eso lo sacas con un

Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. id INT,
  3. id1 INT,
  4. id2 INT,
  5. id3 INT
  6. )
  7.  
  8.  
  9.  
  10. INSERT INTO #temp VALUES (1, 11, 4, 2)
  11. INSERT INTO #temp VALUES (1, 11, 6, 1)
  12. INSERT INTO #temp VALUES (1, 36, 10, 2)
  13.  
  14. CREATE TABLE #temp2(
  15. id INT,
  16. id1 INT,
  17. id2 INT,
  18. id3 INT
  19. )
  20.  
  21.  
  22. INSERT INTO #temp2 VALUES (1, 11, 4, 1)
  23. INSERT INTO #temp2 VALUES (1, 11, 4, 2)
  24. INSERT INTO #temp2 VALUES (1, 11, 4, 3)
  25. INSERT INTO #temp2 VALUES (1, 36, 10, 1)
  26. INSERT INTO #temp2 VALUES (1, 36, 10, 2)
  27.  
  28. SELECT SUM(cuantos),id3 FROM
  29. (
  30. SELECT COUNT(*) cuantos,t1.id,t1.id1,t1.id2,t1.id3 FROM #temp AS t1
  31. INNER JOIN #temp2 AS t2 ON (t1.id=t2.id AND t1.id1=t2.id1 AND t1.id2=t2.id2)
  32. WHERE t1.id3=t2.id3
  33. GROUP BY t1.id,t1.id1,t1.id2,t1.id3
  34. ) AS t3 GROUP BY id3
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 23/01/2014, 11:42
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: count de registros donde no coincidan 3 campos

Tons, no entendí NADA !!, jajajaja
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 23/01/2014, 11:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: count de registros donde no coincidan 3 campos

Cita:
Iniciado por iislas Ver Mensaje
Tons, no entendí NADA !!, jajajaja
Ps ni el que pregunta entiende que quiere :S como ahi que?? jejejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 23/01/2014, 11:48
 
Fecha de Ingreso: julio-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: count de registros donde no coincidan 3 campos

Ohh, no sabías que se podía hacer eso. Así quedó dentro de mi procedimiento almacenado:

nu_solicitudesCotizadas =

(
SELECT SUM(cuantos) FROM
(
SELECT COUNT(*) cuantos,OTRe.id_Empresa, OTRe.id_Obra, OTRe.id_OrdenTrabajo FROM EspecialidadesCompradores ECRe
INNER JOIN OrdenesTrabajo OTRe ON ECRe.id_Especialidad=OTRe.id_Especialidad
INNER JOIN OrdenesTrabajoCotizacion OTCORe ON OTRe.id_Empresa=OTCORe.id_Empresa AND OTRe.id_Obra=OTCORe.id_Obra AND OTRe.id_OrdenTrabajo=OTCORe.id_OrdenTrabajo
INNER JOIN Obras ORe ON ORe.id_Obra=OTRe.id_Obra AND ORe.id_Empresa=OTRe.id_Empresa
WHERE ECRe.id_EmpleadoComprador=EC.id_EmpleadoComprador
AND ECRe.sn_Activo=1
AND ORe.id_TipoObra=1
--AND OTRe.id_Especialidad = OT.id_Especialidad
-- Recibidas en la semana actual (Lunes a Viernes)
AND OTRe.fh_envio IS NOT NULL
AND OTRe.id_Estatus in(306,307)
AND
--CASE ISNULL(OTRe.fh_Reenvio, 1) WHEN 1 THEN OTRe.fh_envio ELSE OTRe.fh_Reenvio END
ISNULL(OTRe.fh_Reenvio,OTRe.fh_envio)
BETWEEN DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) AND DATEADD(wk, DATEDIFF(wk,4,getdate()), 4)
GROUP BY OTRe.id_Empresa, OTRe.id_Obra, OTRe.id_OrdenTrabajo, ECRe.id_EmpleadoComprador
) AS t3
)

Es correcto?
  #10 (permalink)  
Antiguo 23/01/2014, 11:49
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: count de registros donde no coincidan 3 campos

Pues ahora si que tu dinos si te dio los resultados esperados...digo yo
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 23/01/2014, 11:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: count de registros donde no coincidan 3 campos

si te da el resultado deseado, entonces es correcto no???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 23/01/2014, 11:54
 
Fecha de Ingreso: julio-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: count de registros donde no coincidan 3 campos

Pues con lo que he probado al parecer si, sólo que en vez de regresarme 0 me regresa null.

Por cierto, si sé lo que quiero jajaja, si no me explique bien disculpen
  #13 (permalink)  
Antiguo 23/01/2014, 12:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: count de registros donde no coincidan 3 campos

para el null puedes usar un

isnull(campo,0)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 23/01/2014, 12:29
 
Fecha de Ingreso: julio-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: count de registros donde no coincidan 3 campos

Ok, muchas gracias, me sirvió mucho la ayuda

Etiquetas: campo, campos, count, registros, select, tabla
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




La zona horaria es GMT -6. Ahora son las 23:31.