Hello All
We are using BO 4.1 SP5, and DB is MS SQL Server 2012
I need a help in the case statement in where clause, wherein I have to calculate a measure based on a fiscal year from Nov of a year to Oct of next year.
while prompting the users, ‘Today’ should be the default value followed by other dates in a list, that i am taking care in LOV’s and parameter section,
problem is -
-
case Statement is failing at the 3rd WHEN condition , (‘today’ <> ‘today’ and datepart(mm,‘today’)=‘12’)
from today how to get the mm out -
If we are selecting a date, it is working fine, but as soon as we select today, it fails
-
what I am expecting is, if I am selecting today, this condition should be ignored.
-
Is there any other easy way of doing it.
could you help me in finding where I am lacking.
Thanks for all the help in advance.
SELECT
D.DATEFORMAT
FROM
fct F INNER JOIN Date D ON (D.DATEID=F.DATEID)
WHERE
( DATE BETWEEN
CASE
WHEN ‘Today’=‘Today’ AND CAST(DATEPART(mm,getdate()) AS VARCHAR(10))=‘12’
THEN cast(cast(datepart(YYYY,DATEADD(YYYY,0,getdate())) as VARCHAR(10)) +’-11-01’ AS VARCHAR(10))
WHEN ‘Today’=‘Today’ AND CAST(DATEPART(mm,getdate()) AS VARCHAR(10))<> ‘12’
THEN CAST(CAST(DATEPART(YYYY,DATEADD(YYYY,-1,getdate())) as VARCHAR(10)) +’-11-01’ AS VARCHAR(10))
WHEN ‘Today’<>‘Today’ AND CAST(DATEPART(mm,‘Today’) AS VARCHAR(10))= ‘12’
THEN cast(cast(datepart(YYYY,DATEADD(YYYY,0,getdate())) as VARCHAR(10)) +’-11-01’ AS VARCHAR(10))
ELSE CAST(CAST(DATEPART(YYYY,DATEADD(YYYY,-1,‘Today’)) as VARCHAR(10)) +’-11-01’ AS VARCHAR(10))
END
AND
CASE
WHEN ‘Today’=‘Today’ AND CAST(DATEPART(mm,getdate()) AS VARCHAR(10)) =‘12’
THEN CAST(CAST(DATEPART(YYYY,DATEADD(YYYY,+1,GETDATE())) AS VARCHAR(10)) +’-10-31’ AS VARCHAR(10))
WHEN ‘Today’=‘Today’ AND CAST(DATEPART(mm,getdate()) AS VARCHAR(10)) <> ‘12’
THEN CAST(CAST(DATEPART(YYYY,GETDATE()) AS VARCHAR(10)) +’-10-31’ AS VARCHAR(10))
WHEN ‘Today’<>‘Today’ AND CAST(DATEPART(mm,‘Today’) AS VARCHAR(10))=‘12’
THEN CAST(CAST(DATEPART(YYYY,DATEADD(YYYY,+1,GETDATE())) AS VARCHAR(10)) +’-10-31’ AS VARCHAR(10))
ELSE cast(cast(datepart(YYYY,‘Today’) AS VARCHAR(10)) +’-10-31’ AS VARCHAR(10))
END )
zgoyal14 (BOB member since 2011-08-03)