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

retornar dos variables del case sql server

Estas en el tema de retornar dos variables del case sql server en el foro de Bases de Datos General en Foros del Web. Cordial saludo. Estoy trabajando con Sql Server y dentro de un case realizo un select que retornaria dos variables; necesito retornar esas variables; aqui el ...
  #1 (permalink)  
Antiguo 19/04/2018, 08:59
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 9 meses
Puntos: 2
Pregunta retornar dos variables del case sql server

Cordial saludo.

Estoy trabajando con Sql Server y dentro de un case realizo un select que retornaria dos variables; necesito retornar esas variables; aqui el script; resalto en negrita las variables que deseo retornar; he escuchado que el case solo retorna una variable.

Código:
declare @fechhoy smalldatetime
declare @ConCuo int 
declare @ultcuopag int 
set @fechhoy = '2018-04-19'
set @ConCuo = 1
set @ultcuopag = 8

select 
	vic.crenumero
	, vic.crefechgeneinte
	UltCuoVen
from 
	vistintecorr as vic
outer apply(
	select(
		case
			when @ConCuo > 0
			then(
				select 
					pp4.ppcuota as UltCuoVen/*, 
					pp4.ppfecha as UltFecVen*]
				from 
					planpago as pp4
				where 
					pp4.crenumero = vic.crenumero 
					and pp4.ppfecha <= @fechhoy
					AND pp4.ppcuota = @ultcuopag
			)
		end
	) as UltCuoVen--, UltFecVen
) as pp3
WHERE
	(vic.crenumero % 2) = 0
order by 
	vic.crenumero ASC
	, vic.crefechgeneinte

Las variables que quiero retornar son UltCuoVen y UltFecVen; sino es posible con el case que otra opcion tengo??

Agradezco de antemano la ayuda que me puedan brindar
  #2 (permalink)  
Antiguo 19/04/2018, 09:06
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: retornar dos variables del case sql server

El case solo retorna un valor no 2 como lo que quieres hacer, podrias hacer una concatenacion de los 2 valores y que te los retorne en el campo que necesitas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/04/2018, 09:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: retornar dos variables del case sql server

¿Por que no lo implementas como stored procedure?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 19/04/2018, 10:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: retornar dos variables del case sql server

Cordial saludo.

Gracias por sus rapidas respuestas, esa consulta ya esta en un procedimiento almacenado; y se hace masivo; son mas o menos 60000 registros, entonces la idea es dejarlo en un solo select para que sea mas rapido el proceso.

El caso de Libras lo he utilizado concatenando las dos variables del select y separandolas en el select; me imagino que esta operacion consume mas recursos...

Código:
declare @fechhoy smalldatetime
declare @ConCuo int 
declare @ultcuopag int 
set @fechhoy = '2018-04-19'
set @ConCuo = 1
set @ultcuopag = 8

select 
	vic.crenumero
	, vic.crefechgeneinte
	, RTRIM(SUBSTRING(cuofec,1,CHARINDEX(',', cuofec)-1)) AS UltCuoVen
	, RTRIM(SUBSTRING(cuofec, CHARINDEX(',', cuofec)+1, LEN(cuofec))) AS UltFecVen
from 
	vistintecorr as vic
outer apply(
	select(
		case
			when @ConCuo > 0
			then(
				select 
					convert(varchar(2),pp4.ppcuota)+ ','+ convert(varchar(19),pp4.ppfecha,121) as cuofec
				from 
					planpago as pp4
				where 
					pp4.crenumero = vic.crenumero 
					and pp4.ppfecha <= @fechhoy
					AND pp4.ppcuota = @ultcuopag
			)
		end
	) as cuofec
) as pp3
WHERE
	(vic.crenumero % 2) = 0
order by 
	vic.crenumero ASC
	, vic.crefechgeneinte
Esto es optimo para consultas de mas de 50000 registros??
  #5 (permalink)  
Antiguo 19/04/2018, 11:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: retornar dos variables del case sql server

podria ser optimo, habria que ver el plan de ejecucion, pero el select se ve bien formado, ademas aplicas la operacion de separacion en el select que es la ultima parte que se ejecuta de un query en sql server, asi que no afecta tanto
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: case, retornar, server, sql, variables
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 12:32.