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

[SOLUCIONADO] columnas de consulta o SP variable

Estas en el tema de columnas de consulta o SP variable en el foro de SQL Server en Foros del Web. Buen dia... Tengo esta tabla: ¿es posible hacer una consulta o un SP donde el nombre de la columna sea variable? Por ejemplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 05/06/2013, 23:23
 
Fecha de Ingreso: noviembre-2003
Mensajes: 209
Antigüedad: 20 años, 5 meses
Puntos: 0
columnas de consulta o SP variable

Buen dia...

Tengo esta tabla:



¿es posible hacer una consulta o un SP donde el nombre de la columna sea variable?

Por ejemplo:

Código SQL:
Ver original
  1. SELECT     cuenta, departamento, marzo
  2. FROM         [tbl_forecast ]
  3. WHERE     (cuenta = @cuenta) AND (departamento = @depto) AND (anio = @anio)

Quisiera hacer que la columna "marzo" sea variable, para poder seleccionar desde una aplicacion los datos del mes de segun la fecha que el usuario seleccione.

¿se puede hacer lo que requiero?


Muchas gracias
  #2 (permalink)  
Antiguo 06/06/2013, 08:18
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: columnas de consulta o SP variable

sip con un query dinamico :)

algo de tipo

Código SQL:
Ver original
  1. DECLARE @columna AS VARCHAR(200)
  2. DECLARE @query Nvarchar(MAX)
  3. SET @columna='marzo'
  4. SET @query='select ' + @columna + 'from tabla'
  5. EXEC sp_executesql @query
saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 06/06/2013, 08:20
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: columnas de consulta o SP variable

Hola

Si en la tabla no existe una columna tipo Datetime (para saber día y hora del registro....

Crearía una columna nueva tipo DEFAULT (getdate()) y en base a esto podrías hacerlo mediante variable o tabla temporal...

Saludos
  #4 (permalink)  
Antiguo 06/06/2013, 08:29
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: columnas de consulta o SP variable

Cita:
Iniciado por ejbsoft Ver Mensaje
Hola

Si en la tabla no existe una columna tipo Datetime (para saber día y hora del registro....

Crearía una columna nueva tipo DEFAULT (getdate()) y en base a esto podrías hacerlo mediante variable o tabla temporal...

Saludos
y la fecha que guardarias ahi en base a que la tomarias? si te fijas en los datos que pone el compañero son sumatorias por meses, si pusieras la fecha seria la fecha del calculo? o como lo manejarias con una columna getdate()??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 06/06/2013, 08:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: columnas de consulta o SP variable

Cita:
Iniciado por Libras Ver Mensaje
y la fecha que guardarias ahi en base a que la tomarias? si te fijas en los datos que pone el compañero son sumatorias por meses, si pusieras la fecha seria la fecha del calculo? o como lo manejarias con una columna getdate()??
Hola, sería para Insert y Update.


Select day(column_date) from Table
group by day(column_date)

Saludos
  #6 (permalink)  
Antiguo 06/06/2013, 08: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: columnas de consulta o SP variable

Cita:
Iniciado por ejbsoft Ver Mensaje
Hola, sería para Insert y Update.


Select day(column_date) from Table
group by day(column_date)

Saludos
sip entiendo lo que quieres lograr, pero para los datos como los que tiene el compañero no es de mucha utilidad una columna de tipo getdate(), ya que esta sacando las sumatorias del mes, quizas en sus datos "maestros" tenga columnas getdate() para poder sacar los datos que necesita, y en la tabla donde tiene dudas lo que necesita es que se le muestre una columna dependiendo de la seleccion de una fecha :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 06/06/2013, 11:37
 
Fecha de Ingreso: noviembre-2003
Mensajes: 209
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: columnas de consulta o SP variable

Muchas gracias a los 2 por su ayuda.

Usando el ejemplo de Libras (que por lo visto es todo un master en SQL), hice la consulta de esta manera:

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[sp_forecast_por_departamento_por_cuenta]
  2. @mes AS nvarchar(15),
  3. @cuenta INT,
  4. @anio INT,
  5. @folio INT
  6.    
  7. AS
  8. BEGIN
  9.  
  10. DECLARE @columna AS VARCHAR(200)
  11. DECLARE @query Nvarchar(MAX)
  12. SET @columna=@mes
  13.  
  14. SET @query='
  15.  
  16.     SELECT     cuenta, anio, departamento, ' + @columna + '
  17. FROM         [tbl_forecast ]
  18. WHERE     (cuenta= ' + @cuenta + ') AND (anio = ' + @anio + ') AND (departamento IN
  19.                          (SELECT     departamento
  20.                            FROM          tbl_partidas
  21.                            WHERE      (folio = ' + @folio + ')
  22.                            GROUP BY departamento))
  23.                            '
  24.     EXEC sp_executesql @query
  25.    
  26. END

Pero me marca este error al probarlo:

Código SQL:
Ver original
  1. Msg 245, Level 16, State 1, PROCEDURE sp_forecast_por_departamento_por_cuenta, Line 15
  2. Conversion failed WHEN converting the VARCHAR VALUE '
  3.  
  4.     SELECT     cuenta, anio, departamento, enero
  5. FROM         [tbl_forecast ]
  6. WHERE     (cuenta=' TO DATA TYPE INT.

Yo creo que es por los espacios entre las comillas simples ó no?

Saludos, muchas gracias
  #8 (permalink)  
Antiguo 06/06/2013, 11:47
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: columnas de consulta o SP variable

no es por el tipo de datos:

Código SQL:
Ver original
  1. SET @query='
  2.  
  3.    SELECT     cuenta, anio, departamento, ' + @columna + '
  4. FROM         [tbl_forecast ]
  5. WHERE     (cuenta= ' + CONVERT(VARCHAR(20),@cuenta) + ') AND (anio = ' + CONVERT(VARCHAR(20),@anio) + ') AND (departamento IN
  6.                          (SELECT     departamento
  7.                            FROM          tbl_partidas
  8.                            WHERE      (folio = ' + CONVERT(VARCHAR(20),@folio) + ')
  9.                            GROUP BY departamento))
  10.                            '
  11.     EXEC sp_executesql @query

prueba con esto :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 06/06/2013, 12:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 209
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: columnas de consulta o SP variable

Libras!

Eres un master!, muchas gracias..... funciona si problemas y ya aprendi algo mas de SQL, alguna vez leí o escuche que decian: "cuando diseñas bien una base de datos, tendras mas de la mitad de programa echo..." algo asi. :D

Etiquetas: columnas, select, tabla, variable
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:35.