Home » Fusion Middleware & Colab Suite » Business Intelligence » Help with SQL Syntax (Oracle SQL)
Help with SQL Syntax [message #647876] |
Wed, 10 February 2016 09:50 ![Go to next message Go to next message](/forum/theme/orafaq/images/down.png) |
![](//www.gravatar.com/avatar/867cd7fbd6cc3fc534d1eb680fbe4b60?s=64&d=mm&r=g) |
gchiham
Messages: 4 Registered: February 2016 Location: Honduras
|
Junior Member |
|
|
Hello I have the following code. It works OK but i need to setup the date manually not to get CURRENT DATE.
The date I want to setup is Oct-11-2015
Can you please help me with the Syntax.
What this does Is to make Buckets:
0-30 days
31-60
61-90
91-120
121+ days
so that calculation is made CURRENT DAY (minus) ABAY Start Date
I want to do it from October-11-2015 (minus) ABAY Start Date
CASE
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( CURRENT_DATE ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( CURRENT_DATE ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) > 120
THEN '121+ Days'
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( CURRENT_DATE ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( CURRENT_DATE ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) BETWEEN 91 AND 120
THEN '91-120 Days'
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( CURRENT_DATE ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( CURRENT_DATE ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) BETWEEN 61 AND 90
THEN '61-90 Days'
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( CURRENT_DATE ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( CURRENT_DATE ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) BETWEEN 31 AND 60
THEN '31-60 Days'
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( CURRENT_DATE ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( CURRENT_DATE ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) < 31
THEN '0-30 Days'
ELSE '0-30 Days'
END
|
|
|
|
|
|
|
Re: Help with SQL Syntax [message #647947 is a reply to message #647882] |
Fri, 12 February 2016 06:47 ![Go to previous message Go to previous message](/forum/theme/orafaq/images/up.png) ![Go to next message Go to next message](/forum/theme/orafaq/images/down.png) |
![](/forum/images/custom_avatars/72104.gif) |
Littlefoot
Messages: 21823 Registered: June 2005 Location: Croatia, Europe
|
Senior Member Account Moderator |
|
|
Google says that TIMESTAMPDIFF belongs to, say, MySQL or DB2 or MariaDB, but not Oracle. So, are you sure that this is a valid syntax? (Your OIBEE says not).
Anyway: in Oracle, you just have to subtract two dates in order to get number of days between them. Here's an example:
SQL> with test as
2 (select date '2016-02-01' datum from dual union
3 select date '2016-02-10' datum from dual union
4 select date '2016-01-20' datum from dual
5 )
6 select trunc(sysdate) today,
7 datum,
8 trunc(sysdate) - datum number_of_days
9 from test;
TODAY DATUM NUMBER_OF_DAYS
---------- ---------- --------------
12.02.2016 20.01.2016 23
12.02.2016 01.02.2016 11
12.02.2016 10.02.2016 2
SQL>
Applied to your situation, it *might* be as follows:case
when employee.abay_start_date - date '2015-10-11' > 120 then '121+ days'
when employee.abay_start_date - date '2015-10-11' between 91 and 120 then '91 - 120 days'
...
end
|
|
|
Re: Help with SQL Syntax [message #647957 is a reply to message #647947] |
Fri, 12 February 2016 08:07 ![Go to previous message Go to previous message](/forum/theme/orafaq/images/up.png) |
![](//www.gravatar.com/avatar/867cd7fbd6cc3fc534d1eb680fbe4b60?s=64&d=mm&r=g) |
gchiham
Messages: 4 Registered: February 2016 Location: Honduras
|
Junior Member |
|
|
I found the answer. Using a Presentation Variable
CASE
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( @{PV_DATE} ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( @{PV_DATE} ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) > 120
THEN '121+ Days'
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( @{PV_DATE} ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( @{PV_DATE} ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) BETWEEN 91 AND 120
THEN '91-120 Days'
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( @{PV_DATE} ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( @{PV_DATE} ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) BETWEEN 61 AND 90
THEN '61-90 Days'
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( @{PV_DATE} ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( @{PV_DATE} ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) BETWEEN 31 AND 60
THEN '31-60 Days'
WHEN TIMESTAMPDIFF ( SQL_TSI_DAY , "Employee"."ABAY Start Date" ,
CAST ( Evaluate ( 'TO_DATE(%1,%2)' AS CHAR ,
CAST ( YEAR ( @{PV_DATE} ) AS VARCHAR ( 4 ) )
|| RIGHT ( '0' || CAST ( MONTH ( @{PV_DATE} ) AS VARCHAR ( 2 ) ) , 2 )
|| '11' , 'YYYYMMDD' ) AS DATE ) ) < 31
THEN '0-30 Days'
ELSE '0-30 Days'
END
And this is place in Formula Field in Oracle Business Intellegence OBIEE 11g
|
|
|
Goto Forum:
Current Time: Thu Feb 13 07:07:14 CST 2025
|