Ver Mensaje Individual
  #8 (permalink)  
Antiguo 15/10/2014, 09:12
Avatar de Libras
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: Consulta a BBDD con campo calculado

Código SQL:
Ver original
  1. SELECT DISTINCT SubQuery3.TIPO_INC, COUNT(SubQuery3.TIPO_INC) AS Cuenta INTO #temp FROM
  2.                     (
  3.                     SELECT AVISOS.NUMERO, AVISOS.DNI, AVISOS.DESCRIP, DATEADD (MINUTE,MINUTOS,CONVERT(datetime, FECHA, 120)) AS T_AVISO, INTERV.TEXTO AS TIPO_INC, FPRIOR.TEXTO AS PRIORIDAD
  4.                     FROM AVISOS INNER JOIN INTERV
  5.                     ON AVISOS.TIPOINTERV=INTERV.ID
  6.                     INNER JOIN FPRIOR
  7.                     ON AVISOS.PRIORIDAD=FPRIOR.ID
  8.                     WHERE AVISOS.CONTRATO=11
  9.                     AND AVISOS.ESTADO02=0
  10.                     AND AVISOS.PRIORIDAD IN (67108869,67108870,67108873)
  11.                     AND DATEADD (MINUTE,MINUTOS,CONVERT(datetime, FECHA, 120)) BETWEEN CONVERT(datetime, '2014-09-01 00:00:00',120) AND CONVERT(datetime, '2014-09-30 23:59:00',120)
  12.                     )
  13.                     SubQuery3
  14.                 GROUP BY SubQuery3.TIPO_INC
  15.  
  16.  
  17. SELECT t1.TIPO_INC,t1.cuenta,t2.total FROM #temp AS t1,(
  18. SELECT SUM(cuenta) AS total FROM #temp) AS t2

En lugar de una temporal podrias usar una CTE que seria algo como esto:

Código SQL:
Ver original
  1. -- Define the CTE expression name and column list.
  2. WITH query_cte (tipo_inc,cuenta)
  3. AS
  4. -- Define the CTE query.
  5. (
  6. SELECT DISTINCT SubQuery3.TIPO_INC, COUNT(SubQuery3.TIPO_INC) AS Cuenta INTO #temp FROM
  7.                     (
  8.                     SELECT AVISOS.NUMERO, AVISOS.DNI, AVISOS.DESCRIP, DATEADD (MINUTE,MINUTOS,CONVERT(datetime, FECHA, 120)) AS T_AVISO, INTERV.TEXTO AS TIPO_INC, FPRIOR.TEXTO AS PRIORIDAD
  9.                     FROM AVISOS INNER JOIN INTERV
  10.                     ON AVISOS.TIPOINTERV=INTERV.ID
  11.                     INNER JOIN FPRIOR
  12.                     ON AVISOS.PRIORIDAD=FPRIOR.ID
  13.                     WHERE AVISOS.CONTRATO=11
  14.                     AND AVISOS.ESTADO02=0
  15.                     AND AVISOS.PRIORIDAD IN (67108869,67108870,67108873)
  16.                     AND DATEADD (MINUTE,MINUTOS,CONVERT(datetime, FECHA, 120)) BETWEEN CONVERT(datetime, '2014-09-01 00:00:00',120) AND CONVERT(datetime, '2014-09-30 23:59:00',120)
  17.                     )
  18.                     SubQuery3
  19.                 GROUP BY SubQuery3.TIPO_INC
  20.  )
  21. -- Define the outer query referencing the CTE name.
  22. SELECT t1.TIPO_INC,t1.cuenta,t2.total FROM query_cte  AS t1,(
  23. SELECT SUM(cuenta) AS total FROM query_cte ) AS t2


Aclarando las CTE's solo son validas en sql server 2008 y posteriores
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 15/10/2014 a las 09:18