01. september 2005 - 12:32Der er
7 kommentarer og 1 løsning
i et 'where' skal jeg have et 'and if'
Hej.
I mit WHERE statement har jeg en masse and-betingelser der fjerne en del rows. Men jeg vil også gerne have at jeg kunne skrive AND IF (noget) så skal den fjerne nogle flere rows. Kan det lade sig gøre??
Koden ser nogenlunde sådan her ud: ------------------- WHERE DVA.dvvedlkategori = 7785 -- planlagt aktivitet and DVA.dvaktivitetstatus = 7787 -- aktiv status
and BGH.AktueltBudgetJN = 'J' and DVA.konto <> 51120 and DVA.konto <> 13701
and BGH.budgetfra >= @dato1 and BGH.budgettil <= @dato2 --and DVA.BudgetDato like '%' + @year + '%' and YEAR(DVA.BudgetDato) <= YEAR(@year)
and DVA.selskabnr = 20 and DVA.ejendomnr = 113 --- midlertidig afgrænsning
-- medtag ikke dem hvor 'maxantalforekomster' er overskredet and (betingelse) --her er problemet!! gør dette: YEAR(DATEADD(yy, (DVA.BudgetGentagHver*(DVA.BudgetGentagMaxAntal-1)), DVA.BudgetDato)) >= YEAR(@year)
at den kun skal lave den AND-betingelse hvis et specielt felt ikke er NULL - fordi eller virker betingelsen ikke. - feltet "DVA.BudgetGentagMaxAntal" må ikke være NULL
Dette her virker f.eks. ikke: --------- and case when DVA.BudgetGentagMaxAntal = 2 then YEAR(DATEADD(yy, (DVA.BudgetGentagHver*(DVA.BudgetGentagMaxAntal-1)), DVA.BudgetDato)) >= YEAR(@year) end ------------ FEJL: Server: Msg 170, Level 15, State 1, Line 67 Line 67: Incorrect syntax near '>'.
---------- AND CASE WHEN DVA.BudgetGentagMaxAntal IS NULL THEN TRUE ELSE YEAR(DATEADD(yy, (DVA.BudgetGentagHver*(DVA.BudgetGentagMaxAntal-1)), DVA.BudgetDato)) >= YEAR(@year) END ----------- smider samme fejl
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.