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

Filtrar cabeceras de columnas de acuerdo a un criterio

Estas en el tema de Filtrar cabeceras de columnas de acuerdo a un criterio en el foro de SQL Server en Foros del Web. Estimados, Buenos dias, una consulta, tengo una tabla que esta desarrollada de la siguiente manera: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE Reporte_Enero ) ...
  #1 (permalink)  
Antiguo 15/07/2014, 09:15
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Pregunta Filtrar cabeceras de columnas de acuerdo a un criterio

Estimados,

Buenos dias, una consulta, tengo una tabla que esta desarrollada de la siguiente manera:

Código SQL:
Ver original
  1. CREATE TABLE Reporte_Enero)
  2. [Teléfono] nvarchar(510),
  3. Departamento nvarchar(510),
  4. S1 FLOAT,
  5. E1 FLOAT,
  6. S2 FLOAT,
  7. E2 FLOAT,
  8. S3 FLOAT,
  9. E3 FLOAT,
  10. S4 FLOAT,
  11. E4 FLOAT,
  12. S5 FLOAT,
  13. E5 FLOAT)

Lo que desearia mostrar es que se pueda mostrar una nueva tabla con los 2 primeros campos como estan, agregar una nueva columna que diga tipo, en donde habran 2 filas, entrantes (en donde se deberan mostrar todos los campos que tengan el prefijo E) y salientes (en donde se deberan mostrar todos los campos que tengan el prefijo S).

Estuve usando el Unpivot para hacerlo, pero no me muestra los resultados que necesito....

podrian apoyarme...???
__________________
Lo que no se....tampoco creo saberlo....
  #2 (permalink)  
Antiguo 15/07/2014, 10: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: Filtrar cabeceras de columnas de acuerdo a un criterio

podrias mostrar cual seria el resultado deseado??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 15/07/2014, 11:12
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: Filtrar cabeceras de columnas de acuerdo a un criterio

Libras, que tal...pues la data que deseo mostrar estoy haciendolo de la siguiente manera:
Código SQL:
Ver original
  1. SELECT DEPARTAMENTO,[TELÉFONO],'SALIENTE' AS TIPO,
  2. ISNULL(ROUND(S1,2),0)S1,
  3. ISNULL(ROUND(S2,2),0)S2,
  4. ISNULL(ROUND(S3,2),0)S3,
  5. ISNULL(ROUND(S4,2),0)S4,
  6. ISNULL(ROUND(S5,2),0)S5 FROM Reporte_Enero
  7. UNION
  8. SELECT DEPARTAMENTO,[TELÉFONO],'ENTRANTE' AS TIPO,
  9. ISNULL(ROUND(E1,2),0)E1,
  10. ISNULL(ROUND(E2,2),0)E2,
  11. ISNULL(ROUND(E3,2),0)E3,
  12. ISNULL(ROUND(E4,2),0)E4,
  13. ISNULL(ROUND(E5,2),0)E5 FROM Reporte_Enero

si bien me muestra la data como quiero, el problema sera en los dias que contenga cada mes...
espero haberme expresado bien....
__________________
Lo que no se....tampoco creo saberlo....
  #4 (permalink)  
Antiguo 15/07/2014, 11:39
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: Filtrar cabeceras de columnas de acuerdo a un criterio

mmm creo que no has entendido,lo que quiero es que digas tengo esto:

CREATE TABLE Reporte_Enero)
[Teléfono] nvarchar(510),
Departamento nvarchar(510),
S1 FLOAT,
E1 FLOAT,
S2 FLOAT,
E2 FLOAT,
S3 FLOAT,
E3 FLOAT,
S4 FLOAT,
E4 FLOAT,
S5 FLOAT,
E5 FLOAT)

y quiero esto:

columna1,columna2,columna3.....

se entiende??? porque la verdad no entiendo que necesitas......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 15/07/2014, 12:31
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: Filtrar cabeceras de columnas de acuerdo a un criterio

Bueno....la data final que deseo mostrar es:

TELÉFONO DEPARTAMENTO SERVICIO dia 1 dia 2 dia 3 dia 4 dia 5
999999999 VENTAS ENTRANTES E1 E2 E3 E4 E5
999999999 VENTAS SALIENTES S1 S2 S3 S4 S5
888888888 LOGISTICA ENTRANTES E1 E2 E3 E4 E5
888888888 LOGISTICA SALIENTES S1 S2 S3 S4 S5

Cabe indicar que los registros dentro de las columnas de Dias son decimales....
__________________
Lo que no se....tampoco creo saberlo....

Última edición por ambichol; 15/07/2014 a las 12:38
  #6 (permalink)  
Antiguo 15/07/2014, 13:16
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: Filtrar cabeceras de columnas de acuerdo a un criterio

Código SQL:
Ver original
  1. SELECT telefono, departamento,
  2. servicio,
  3. CASE WHEN servicio='Entrante' THEN E1 ELSE s1 END AS dia1,
  4. CASE WHEN servicio='Entrante' THEN E2 ELSE s2 END AS dia2,
  5. CASE WHEN servicio='Entrante' THEN E3 ELSE s3 END AS dia3,
  6. CASE WHEN servicio='Entrante' THEN E4 ELSE s4 END AS dia4,
  7. CASE WHEN servicio='Entrante' THEN E5 ELSE s5 END AS dia5
  8. FROM tabla

algo asi no funciona???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 16/07/2014, 13:36
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: Filtrar cabeceras de columnas de acuerdo a un criterio

Libras, que tal...ya pude solucionar el problema...indaque en la web....y encontre un codigo que me sirvio, pero o adapte a lo que necesitaba:
Código SQL:
Ver original
  1. DECLARE @CSALIENTES VARCHAR(MAX)
  2. DECLARE @CENTRANTES VARCHAR(MAX)
  3. DECLARE @SQLQUERY VARCHAR(MAX);
  4.  
  5. SET @CSALIENTES = ''
  6. SET @CENTRANTES = ''
  7.  
  8. SELECT @CSALIENTES =  COALESCE(@CSALIENTES + 'ISNULL(ROUND(S' + CAST(DIA AS VARCHAR(2)) + ',2),0)S'+CAST(DIA AS VARCHAR(2))+',', '')
  9. FROM (SELECT DISTINCT DIA FROM REP_DIARIO) AS DTM
  10. --
  11. SELECT @CENTRANTES =  COALESCE(@CENTRANTES + 'ISNULL(ROUND(E' + CAST(DIA AS VARCHAR(2)) + ',2),0)E'+CAST(DIA AS VARCHAR(2))+',', '')
  12. FROM (SELECT DISTINCT DIA FROM REP_DIARIO) AS DTM
  13. --
  14. SET @CSALIENTES = LEFT(@CSALIENTES,LEN(@CSALIENTES)-1)
  15. SET @CENTRANTES = LEFT(@CENTRANTES,LEN(@CENTRANTES)-1)
  16. --
  17. SET @SQLQUERY = N'
  18. SELECT DEPARTAMENTO,RIGHT(''000''+CAST(LEFT([TELÉFONO],2) AS VARCHAR(3)),3)COD_ACCESO,SUBSTRING([TELÉFONO],3,7)TT_PP,''SALIENTE'' TIPO_TRAFICO,
  19. '+@CSALIENTES+'
  20. FROM Planta_Rep_PA_201401
  21. WHERE TIPO NOT IN (''-'')
  22. UNION
  23. SELECT DEPARTAMENTO,RIGHT(''000''+CAST(LEFT([TELÉFONO],2) AS VARCHAR(3)),3)COD_ACCESO,SUBSTRING([TELÉFONO],3,7)TT_PP,''ENTRANTE'' TIPO_TRAFICO,
  24. '+@CENTRANTES+'
  25. FROM Planta_Rep_PA_201401
  26. WHERE TIPO NOT IN (''-'')
  27. ORDER BY 4,2'
  28.  
  29. EXEC (@SQLQUERY)

a tu parecer...esta bien este planteamiento...???
__________________
Lo que no se....tampoco creo saberlo....
  #8 (permalink)  
Antiguo 16/07/2014, 14: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: Filtrar cabeceras de columnas de acuerdo a un criterio

Cita:
Iniciado por ambichol Ver Mensaje
Libras, que tal...ya pude solucionar el problema...indaque en la web....y encontre un codigo que me sirvio, pero o adapte a lo que necesitaba:
Código SQL:
Ver original
  1. DECLARE @CSALIENTES VARCHAR(MAX)
  2. DECLARE @CENTRANTES VARCHAR(MAX)
  3. DECLARE @SQLQUERY VARCHAR(MAX);
  4.  
  5. SET @CSALIENTES = ''
  6. SET @CENTRANTES = ''
  7.  
  8. SELECT @CSALIENTES =  COALESCE(@CSALIENTES + 'ISNULL(ROUND(S' + CAST(DIA AS VARCHAR(2)) + ',2),0)S'+CAST(DIA AS VARCHAR(2))+',', '')
  9. FROM (SELECT DISTINCT DIA FROM REP_DIARIO) AS DTM
  10. --
  11. SELECT @CENTRANTES =  COALESCE(@CENTRANTES + 'ISNULL(ROUND(E' + CAST(DIA AS VARCHAR(2)) + ',2),0)E'+CAST(DIA AS VARCHAR(2))+',', '')
  12. FROM (SELECT DISTINCT DIA FROM REP_DIARIO) AS DTM
  13. --
  14. SET @CSALIENTES = LEFT(@CSALIENTES,LEN(@CSALIENTES)-1)
  15. SET @CENTRANTES = LEFT(@CENTRANTES,LEN(@CENTRANTES)-1)
  16. --
  17. SET @SQLQUERY = N'
  18. SELECT DEPARTAMENTO,RIGHT(''000''+CAST(LEFT([TELÉFONO],2) AS VARCHAR(3)),3)COD_ACCESO,SUBSTRING([TELÉFONO],3,7)TT_PP,''SALIENTE'' TIPO_TRAFICO,
  19. '+@CSALIENTES+'
  20. FROM Planta_Rep_PA_201401
  21. WHERE TIPO NOT IN (''-'')
  22. UNION
  23. SELECT DEPARTAMENTO,RIGHT(''000''+CAST(LEFT([TELÉFONO],2) AS VARCHAR(3)),3)COD_ACCESO,SUBSTRING([TELÉFONO],3,7)TT_PP,''ENTRANTE'' TIPO_TRAFICO,
  24. '+@CENTRANTES+'
  25. FROM Planta_Rep_PA_201401
  26. WHERE TIPO NOT IN (''-'')
  27. ORDER BY 4,2'
  28.  
  29. EXEC (@SQLQUERY)

a tu parecer...esta bien este planteamiento...???
Pues no entendi bien que querias obtener, pero si te funciona esta bien :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: acuerdo, cabeceras, campo, columnas, filtrar, 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 00:27.