SQL - Concatenar sentencia

 
Vista:

Concatenar sentencia

Publicado por Alfredo (20 intervenciones) el 12/10/2005 20:16:41
Hola,
me gustaria saber si en sql se puede hacer mas o menos esto:

deseo crear un procedimiento almacenado en el cual yo consulte los campos segun un criterio de seleccion, por ejemplo, si el criterio es 1 consulte el nombre, si es 2 consulte el apellido (sin tener que crear procedimientos adicionales), lo que quiero hacer es algo mas o menos asi:

declare @Criterio varchar(5)
declare @Opcion varchar(50)

if @Criterio = 1
begin
@Opcion = 'Nombre' -- Nombre es el nombre del campo en la tabla
end
.....

select @Opcion from tabla

pero necesito que se entienada @Opcion como campo o sea:

select nombre from tabla.

alguna idea?, muchas gracias....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Concatenar sentencia

Publicado por christian (38 intervenciones) el 12/10/2005 22:21:01
Si y te paso un ejemplo claro de como hacer consultas dinamicas

SET @QUERY = '
DECLARE @DIA_INI AS DATETIME
DECLARE @DIA_FIN AS DATETIME
SET @DIA_INI = '+''''+@DIA_INI+''''+
' SET @DIA_FIN ='+''''+@DIA_FIN+''''
SET @QUERY = @QUERY +
'
SELECT A.FECHA_PROCESO_CAJA AS FECHA,
A.ID_TRANSACCION AS OP,
A.NOMBRE_HIPER AS NOMBRE_HIPER,
(SELECT TOP 1 DESCRIPCION FROM VT_OPERADORES WHERE ID_OPERADOR = A.ID_OPERADOR) AS OPERADOR,
(SELECT TOP 1 DESCRIPCION_ORIGEN_PEDIDO FROM VT_ORIGEN_PEDIDO WHERE ID_ORIGEN_PEDIDO = A.ID_ORIGEN_PEDIDO) AS ORIGEN_PEDIDO,
(A.IMPORTE_LINEA_CAJA / 1.21) AS TOTAL,
A.IMPORTE_LINEA_CAJA AS MARGEN
INTO ##TEMP_REPORT
FROM VT_ENC_TRN A
WHERE A.ID_ESTADO = 3
AND A.ID_ORIGEN_VENTA = 1
AND A.FECHA_PROCESO_CAJA > @DIA_INI
AND A.FECHA_PROCESO_CAJA < @DIA_FIN '

EXEC (@query)

Espero te sirva. cualquier cosa aca estoy...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Concatenar sentencia

Publicado por Alfredo (20 intervenciones) el 13/10/2005 15:45:14
Hola, ok funciona perfecto me falta colocar la instruccion en un execute
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar