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

[SOLUCIONADO] Optimizar consulta de selección contando ocurrencias en por columnas

Estas en el tema de Optimizar consulta de selección contando ocurrencias en por columnas en el foro de SQL Server en Foros del Web. Quisiera me pudieran ayudar con una consulta que debo optimizar. Resulta que tengo una tabla bien grande donde todas las columnas son de tipo nvarchar(20). ...
  #1 (permalink)  
Antiguo 27/02/2014, 08:28
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Optimizar consulta de selección contando ocurrencias en por columnas

Quisiera me pudieran ayudar con una consulta que debo optimizar.
Resulta que tengo una tabla bien grande donde todas las columnas son de tipo nvarchar(20).
Lo que deseo hacer es contar por columnas todas las ocurrencias de por ejemplo un TEXTO en cada una de ellas que cumpla una CONDICIÓN.
Hice una consulta que me resuelve, lo que pasa es q es muy ineficiente y demora bastante.
La consulta es como la siguiente:

Select
(Select count(*) from TABLA where A='TEXTO' and CONDICIÓN) as Col_1,
(Select count(*) from TABLA where B='TEXTO' and CONDICIÓN) as Col_2,
(Select count(*) from TABLA where C='TEXTO' and CONDICIÓN) as Col_3,
...

De antemano las gracias.
  #2 (permalink)  
Antiguo 27/02/2014, 09:26
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Optimizar consulta de selección contando ocurrencias en por columnas

Ya lo resolví de a siguiente manera:

SELECT
COUNT (case when isnull(A,'') in ('Error1','Error2') then 0 end) as Col_1,
COUNT (case when isnull(B,'') in ('Error1','Error2') then 0 end) as Col_2,
COUNT (case when isnull(C,'') in ('Error1','Error2') then 0 end) as Col_3
FROM TABLA
whereCONDICIÓN

Etiquetas: columnas, select, siguiente, 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 13:50.