Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Reusar consulta (https://www.clubdelphi.com/foros/showthread.php?t=52021)

Gaim2205 07-01-2008 23:16:25

Reusar consulta
 
Otra vez yo, siento ser una molestia pero ando en un proyecto algo grande que involucra consultas igual de grandes :P y por ahi me van saliendo dudas, generalmente trato de resolverlas yo mismo pero bueno ahora tengo una duda.

Me ahorraria mucho trabajo si pudiera reutilizar una parte de mi consulta mas adelante dentro de la misma. Me explico:

Por ejemplo tengo lo siguiente:
Código SQL [-]
SELECT sum(case when Concepto = 1510 then importe else 0 end)+
sum(case when Concepto = 1515 then importe else 0 end)+
sum(case when Concepto = 1520 then importe else 0 end)+
sum(case when Concepto = 1615 then importe else 0 end)+
sum(case when Concepto = 1625 then importe else 0 end) AS 'DESPENSA'
......
FROM ......

Mas adelante dentro de la misma consulta tengo que repetir ese codigo y agregarle un poco mas. Para no tener que escribir toooodo de nuevo, no se puede hacer algo como
Código SQL [-]
select DESPENSA + sum(case when Concepto = 1630 then importe else 0 end) AS 'DESPENSA2'

Se que podria guardar variables en delphi con cada trozo de mi consulta, pero por el momento es indispensable que lo haga todo en un select grandisimo.

Utilizo sql server 2000
Gracias....

jachguate 07-01-2008 23:27:28

En casos como este, en ocasiones creo primero una vista que hace los cálculos y luego un select de la vista, donde puedo reutilizarlos libremente.

Hasta luego.

;)

lgarcia 08-01-2008 21:02:35

Reusar consulta
 
Hola:Una variante puede ser la construcion dinamica de la consulta con algo parecido a esto:

lgarcia 08-01-2008 21:06:49

Reusar consulta
 
Hola:Una variante puede ser la construcion dinamica de la consulta con algo parecido a esto:CREATE PROCEDURE MostrarBolsoJTurno @area int, @cadena nvarchar(4000)ASdeclare @SQLString nvarchar(4000)set @SQLString = 'SELECT dbo.Bolsos.id, dbo.Bolsos.cartaporte, dbo.Bolsos.sek, dbo.Bolsos.jpy, dbo.Bolsos.total, dbo.Bolsos.ruta' + CHAR(13)set @SQLString = @SQLString + 'FROM dbo.Bolsos INNER JOIN dbo.Usuarios ON dbo.Bolsos.usuario = dbo.Usuarios.id' + CHAR(13)set @SQLString = @SQLString + 'WHERE ' + @cadena + CHAR(13)set @SQLString = @SQLString + 'Order by fecha, ruta'EXEC sp_executesql @SQLStringGOO sea utilizar una cadena y luego pasarle los parametros que quieras.SaludosLuis Garcia


La franja horaria es GMT +2. Ahora son las 12:26:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi