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

Cómo lo hariáis ¿Subconsulta, vista?

Estas en el tema de Cómo lo hariáis ¿Subconsulta, vista? en el foro de SQL Server en Foros del Web. Buenas, Tengo una consulta que me devuelve dos columnas y otras tantas filas. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT     DISTINCT ( identificador ...
  #1 (permalink)  
Antiguo 15/01/2010, 01:13
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Cómo lo hariáis ¿Subconsulta, vista?

Buenas,

Tengo una consulta que me devuelve dos columnas y otras tantas filas.

Código SQL:
Ver original
  1. SELECT     DISTINCT(identificador), id_linia_incidencia
  2. FROM         NSG_INCIDENCIES_CLIENT INNER JOIN
  3.                       NSG_INCIDENCIES_HISTORIC ON NSG_INCIDENCIES_CLIENT.id_incidencia = NSG_INCIDENCIES_HISTORIC.id_incidencia WHERE (YEAR(data_incidencia)='2010') AND (DAY(data_incidencia)='14')

Salida

Código:
INC100122550   3
INC100122575   2
INC100122552   2
INC100122561   2
INC100122554   3
INC100122566   2
INC100122560   2
INC100122563   1
INC100122567   2
INC100122569   2
INC100122555   2
INC100122558   2
INC100122553   2
INC100122572   2
INC100122573   2
INC100122564   2
INC100122551   2
INC100122562   2
INC100122574   2
INC100122559   2
INC100122565   2
INC100122556   2
INC100122568   2
INC100122571   2
INC100122557   2
INC100122570   2
La primera columna es el numero de incidencia y la segunda corresponde a la linia de incidencia

Me gustaría poder sacar un listado que me contase cuantas incidencias hay de cada linea de incidencia.
1 1
2 23
3 1

Para ello debo hacer una subconsulta, o una vista? ¿cómo lo haríais vosotros?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 15/01/2010, 01:52
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Cómo lo hariáis ¿Subconsulta, vista?

Prueba algo así:

Código:
SELECT DISTINCT id_linia_incidencia, (SELECT
	COUNT(id_linia_incidencia) FROM NSG_INCIDENCIES_HISTORIC WHERE id_linia_incidencia=hist.id_linia_incidencia)
FROM NSG_INCIDENCIES_CLIENT incid INNER JOIN
	NSG_INCIDENCIES_HISTORIC his ON incid.id_incidencia = his.id_incidencia WHERE (YEAR(data_incidencia)='2010') AND (DAY(data_incidencia)='14')
Simplemente hago un distinct de la id_linea_indicencia por lo que te dará el nº de linea, y la subconsulta siguiente hace un count de esa id_linea_indicencia), a ver si te funciona así.

Salut!
  #3 (permalink)  
Antiguo 15/01/2010, 05:46
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Cómo lo hariáis ¿Subconsulta, vista?

Cita:
Iniciado por moddik Ver Mensaje
Prueba algo así:

Código:
SELECT DISTINCT id_linia_incidencia, (SELECT
	COUNT(id_linia_incidencia) FROM NSG_INCIDENCIES_HISTORIC WHERE id_linia_incidencia=hist.id_linia_incidencia)
FROM NSG_INCIDENCIES_CLIENT incid INNER JOIN
	NSG_INCIDENCIES_HISTORIC his ON incid.id_incidencia = his.id_incidencia WHERE (YEAR(data_incidencia)='2010') AND (DAY(data_incidencia)='14')
Simplemente hago un distinct de la id_linea_indicencia por lo que te dará el nº de linea, y la subconsulta siguiente hace un count de esa id_linea_indicencia), a ver si te funciona así.

Salut!
Mmmm... no da el resultado esperado

Código ASP:
Ver original
  1. SELECT DISTINCT id_linia_incidencia, (SELECT
  2. COUNT(id_linia_incidencia) FROM NSG_INCIDENCIES_HISTORIC where NSG_INCIDENCIES_CLIENT.id_incidencia = NSG_INCIDENCIES_HISTORIC.id_incidencia) AS suma
  3. FROM         NSG_INCIDENCIES_CLIENT INNER JOIN
  4.                       NSG_INCIDENCIES_HISTORIC ON NSG_INCIDENCIES_CLIENT.id_incidencia = NSG_INCIDENCIES_HISTORIC.id_incidencia WHERE (YEAR(data_incidencia)='2010') AND (DAY(data_incidencia)='14')

Salida

Código:
2	3
2	11
2	2
2	10
3	5
2	7
1	5
2	6
2	5
2	4
No se donde mirar...
  #4 (permalink)  
Antiguo 15/01/2010, 05:53
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Cómo lo hariáis ¿Subconsulta, vista?

Creo que tu sentencia se corresponde con esta en lugar de la que puse.

Código ASP:
Ver original
  1. SELECT DISTINCT id_linia_incidencia, (SELECT
  2.     COUNT(id_linia_incidencia)
  3.  FROM NSG_INCIDENCIES_HISTORIC where id_linia_incidencia=NSG_INCIDENCIES_HISTORIC.id_linia_incidencia) AS suma
  4. FROM         NSG_INCIDENCIES_CLIENT INNER JOIN
  5.                       NSG_INCIDENCIES_HISTORIC ON NSG_INCIDENCIES_CLIENT.id_incidencia = NSG_INCIDENCIES_HISTORIC.id_incidencia WHERE (YEAR(data_incidencia)='2010') AND (DAY(data_incidencia)='14')

Salida

Código:
1	80814
2	80814
3	80814
La suma la hace de forma incorrecta :S
  #5 (permalink)  
Antiguo 18/01/2010, 09:13
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Cómo lo hariáis ¿Subconsulta, vista?

Prueba asi:
Código SQL:
Ver original
  1. SELECT id_linia_incidencia, COUNT(1)
  2. FROM (
  3.     SELECT DISTINCT identificador, id_linia_incidencia
  4.     FROM NSG_INCIDENCIES_CLIENT C
  5.     INNER JOIN NSG_INCIDENCIES_HISTORIC H ON C.id_incidencia = H.id_incidencia
  6.     WHERE YEAR(data_incidencia)='2010' AND DAY(data_incidencia)='14'
  7. ) T
  8. GROUP BY id_linia_incidencia
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 19/01/2010, 05:56
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Cómo lo hariáis ¿Subconsulta, vista?

Cita:
Iniciado por flaviovich Ver Mensaje
Prueba asi:
Código SQL:
Ver original
  1. SELECT id_linia_incidencia, COUNT(1)
  2. FROM (
  3.     SELECT DISTINCT identificador, id_linia_incidencia
  4.     FROM NSG_INCIDENCIES_CLIENT C
  5.     INNER JOIN NSG_INCIDENCIES_HISTORIC H ON C.id_incidencia = H.id_incidencia
  6.     WHERE YEAR(data_incidencia)='2010' AND DAY(data_incidencia)='14'
  7. ) T
  8. GROUP BY id_linia_incidencia
Funcionó flaviovich muchas gracias!

Etiquetas: subconsulta, vistas
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 18:54.