Avatar billede OWSQL Nybegynder
20. juni 2011 - 09:26

SQL - anvendelse af variabler

Hej
Jeg har en SQL kode, hvor jeg dagligt har behov for at ændre nogle søgekriterier. I stedet for at ændre 3 datofelter mange gange har jeg forsøgt at erklære en variabel per datofelt. Jeg får dog fejl på query og er nu tvivl om syntaksen?
Jeg har indsat koden nedenunder, hvor jeg definerer 3 variabler @ValuationT, @EndT and @BegT. Jeg har forsøgt med forskellige variable typer, men ingen virker umiddelbart. Planen var at lave flere join select statements der skal anvende værdierne for de 3 variabler. Kan det lade sig gøre? Skal man skrive noget specielt hvor man sætter variablen ind?


use AllegroMRTesting

GO
Declare @ValuationT timestamp;
Set @ValuationT = '2011-05-12 23:00:00.000'

Declare @BegT timestamp;
Set @BegT = '2011-05-01 00:00:00.000'

Declare @EndT timestamp;
Set @EndT = '2015-10-01 00:00:00.000'

GO

SELECT
valuationdetail.tradebook tradebook,
valuationdetail.tradetype tradetype,
valuationdetail.pricestatus pricestatus,
valuationdetail.unit unit,
valuationdetail.priceindex priceindex,
valuationdetail.begtime begtime,
product.producttype producttype,
sum(valuationdetail.exposurequantity) as exp
--sum(valuationdetail.exposurequantity) as exp where unit = 'mt')
--(sum(valuationdetail.exposurequantity / 6.35)) as exp where unit = 'mt')
FROM valuation, valuationdetail, position, finposition, product
WHERE valuation.valuationmode = 'Position' and valuation.valuation=valuationdetail.valuation
and valuationdetail.position=finposition.position and valuationdetail.posdetail=finposition.posdetail and valuationdetail.product = product.product
and valuationdetail.position = position.position and valuationdetail.quantitytype <> 'LOSS'
and ( (valuation.valuationtype = 'SUMMATION'
and valuation.valuationtime = @ValuationT ) or (valuation.valuationtype = 'INCREMENTAL'
and valuation.valuationtime >= @ValuationT and valuation.valuationtime <= @ValuationT) )
and  position.trade is not null  AND ((valuationdetail.begtime< @EndT OR valuationdetail.begtime is null)
AND (valuationdetail.endtime> @BegT OR valuationdetail.endtime is null)) 
AND (  valuationdetail.exposure = 'MARKET'
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester