Decode help in SQL function
Hi,
I'm writing an HTMLDB application that we will be using to track the number of hours that we put into a project (all projects), and I've got a routine that returns the number of hours that are possible within a given month M-F 8 hours a day. I use this value returned to indicate how many hours have been enterered.
SELECT null link, 'Still Unrecorded' itsrdescr,trueworkdays(:P80_START,:P80_END)*8-(select sum(hoursworked) ihoursworked from workdetail wd, breakdowns b
WHERE wd.workdetailid = b.itsrnum and b.oid = upper(:P80_DEVELOPER) and dateworked between :P80_START and :P80_END) hoursworked
from dual
UNION
SELECT null link, wd.itsrdescr,sum(b.hoursworked) hoursworked
FROM workdetail wd, breakdowns b
WHERE wd.workdetailid = b.itsrnum and b.oid = upper(:P80_DEVELOPER) and dateworked between :P80_START and :P80_END
GROUP by wd.itsrdescr
ORDER by hoursworked desc
What I'm wanting is something along the lines of this:
SELECT null link, 'Still Unrecorded' itsrdescr,decode((trueworkdays(:P80_START,:P80_END)*8-(select sum(hoursworked) ihoursworked from workdetail wd, breakdowns b
WHERE wd.workdetailid = b.itsrnum and b.oid = upper(:P80_DEVELOPER) and dateworked between :P80_START and :P80_END)),<0,0,?????????) hoursworked
from dual
UNION
SELECT null link, wd.itsrdescr,sum(b.hoursworked) hoursworked
FROM workdetail wd, breakdowns b
WHERE wd.workdetailid = b.itsrnum and b.oid = upper(:P80_DEVELOPER) and dateworked between :P80_START and :P80_END
GROUP by wd.itsrdescr
ORDER by hoursworked desc
which will include a decode statement to let me know when the value getting returned into hoursworked on that first column is less than zero which throws off the chart. In this particular case, it has a value of -6 which makes all my percentages go haywire. How would one code this statement to include a decode statement to find out if that sum is returning a negative number?
Hope this made sense,
TIA,
cliff
Hey Tyler,
Actually.... It kinda killed the server. I'm trying to figure out a way to get the following functionality in a different way. Here is the way that the query turned out using the case statement.
SELECT null link, '<b><font color="red">Still Unrecorded</font></b>' itsrdescr,
(case
when (trueworkdays(:P80_START,:P80_END)*8-(select sum(hoursworked) ihoursworked from workdetail wd, breakdowns b
WHERE wd.workdetailid = b.itsrnum and b.oid = upper(:P80_DEVELOPER) and dateworked between :P80_START and :P80_END)) < 0 then 0
else
(trueworkdays(:P80_START,:P80_END)*8-(select sum(hoursworked) ihoursworked from workdetail wd, breakdowns b
WHERE wd.workdetailid = b.itsrnum and b.oid = upper(:P80_DEVELOPER) and dateworked between :P80_START and :P80_END))
end) hoursworked
from dual
UNION
SELECT null link, wd.itsrdescr,sum(b.hoursworked) hoursworked
FROM workdetail wd, breakdowns b
WHERE wd.workdetailid = b.itsrnum and b.oid = upper(:P80_DEVELOPER) and dateworked between :P80_START and :P80_END
GROUP by wd.itsrdescr
ORDER by hoursworked desc
Any tips on what I could do to get the above functionality without killing my server.
Thx for the input
cliff
Similar Messages
-
i m writing an sql query to print records
select role_name,date_created,date_modified,createdbyuser_id,modifiedbyuser_id from t_role;
This returns me the the rows in table t_role.
But what i want is instead of the id of the person being printed in createdbyuser_id and modifiedbyuser_id, it shud provide me the username from another table user by checking the user_id field of table user.For this i used the fuction decode .But it oesnt work
select role_name,date_created,date_modified,(select user_name from user where user_id=createdbyuser_id),(select user_name from user where user_id=modifiededbyuser_id) from role;
kindly point out the mistake.
Shefali<<
i m writing an sql query to print records
>>
and
<<
1) tried this
select a.role_name,a.date_created, a.date_modified, b.user_name, c.user_name from role a, user b, user c where b.user_Id = a.createdbyuser_Id and c.user_Id = a.modifiedbyuser_Id;
But getting this error::
ORA-20001: Your query contains duplicate alias names, queries used for reports require unique alias names.
Error saving column settings
>>
so you are working with report writer ?
the error message is telling you all you need.
just change :
select a.role_name ,a.date_created, a.date_modified
, b.user_name, c.user_name
from role a, user b, user c
where b.user_Id = a.createdbyuser_Id
and c.user_Id = a.modifiedbyuser_Id
;to
select a.role_name ,a.date_created, a.date_modified
, b.user_name_creator, c.user_name_modifier
from role a, user b, user c
where b.user_Id = a.createdbyuser_Id
and c.user_Id = a.modifiedbyuser_Id
; -
Need help pl/sql function body returning SQL query - Reports
I need help with Grouping by on a report that I developed in my application.
I have posted my Code in
Apex.oracle.com
workspace : c a s e _ m a n a g e m e n t
User Id : public
Password : public
I need help on Page 38 Reports.
I get blank lines when I do break by first , second and third columns on the reports attribute.
So I think I have to write "group by " or Distinct in side the SQL query. But not sure how to do it there.
Thank youIs this an APEX question, then try here:
Oracle Application Express (APEX)
Is this an Oracle Reports question, then try here:
Reports
Is this an SQL question:
Please provide sample data and expected output. Also please show what you have tried already. -
Hi all,
I have a table with Purchase Order Receipts and Invoice data in it. The problem I have is that the invoice number only appers on one of the receipted lines and the rest of the lines are Null value. What SQL could I use so that it will only show one line for each Purchase Order, Total Quantity Received and search the Invoice column for an invoice number. Therefore, if there is a NULL value on all the lines in the Invoice column related to the Purchase Order then show the Purchase Order and Total Quantity Received.
Fields needed:
Ponum PO_Number,
quantity Quantity_Received,
invoicenum Invoice_Number
From Table:
maximo.matrectrans
Many thanks in advanceHi,
You may have noticed that this site normally doesn't display multiple spaces in a row.
Whenever you post formatted text (such as query results) on this site, type these 6 characters:
\(small letters only, inside curly brackets) before and after each section of formatted text, to preserve spacing.
Formatting is very important for queries and for output.
Formatting is nice, but not essential, for the CREATE TABLE and INSERT statements that you must post for people to understand the problem, re-create it, and test their ideas. It doesn't look like you've tried to post these. -
Use sql function decode with Zend code
Hi,
I need to use sql function DECODE() in a query for PHP Code. This query works well in sql*plus but PHP returns
the following error message:
Parse error: syntax error, unexpected T_STRING in C:\Program Files\Zend\Apache2\htdocs\Compta\compta2.php on line 16
the query is :
$query =
'select substr(c.NUM,1 ,2) Compte ,
c.designation , a.Periode
,decode(substr(c.NUM,1 ,1), '1',1, '2',1,'3',1,-1) cp_type ,
sum(credit) - sum(debit) Montant
from ecritures a, clients b, compte c
where
b.NUM (+) =a.NUM
and a.DATEECRITURE between to_date(:debut, \'dd/mm/yy\') and to_date(:fin, \'dd/mm/yy\')
and substr(a.num,1,2) =c.num
group by substr(c.NUM,1 ,1), substr(c.NUM,1,2) , c.designation ,a.periode
order by compte ';
Can any one help me ???
Thanks by advance
nb: Iuse Zend 2.0Hi,
You need to escape single quote mark:
decode(substr(c.NUM,1 ,1), \'1\',1, \'2\',1,\'3\',1,-1) cp_type ,
the same way you did for to_date:
to_date(:debut, \'dd/mm/yy\')
Regards,
Paweł -
Need help in SQL (DENSE_RANK) function
Hello All,
I need the help in SQL.
We have a table called status and the column are
status_id number
account_id number
status_cd varchar2(10)
created_id varchar2(10)
created_by date
and data is as follows
insert into status values (1,101,'ENTER','ABC',to_date('21-JAN-2007 11:15:14','DD-MON-YYYY HH:MI:SS'));
insert into status values (2,101,'REVIEW','DEF',to_date('21-JAN-2007 11:30:25','DD-MON-YYYY HH:MI:SS'));
insert into status values (3,101,'APPROVE','GHI',to_date('21-JAN-2007 11:30:25','DD-MON-YYYY HH:MI:SS'));
insert into status values (4,102,'ENTER','ABC',to_date('21-JAN-2007 11:18:14','DD-MON-YYYY HH:MI:SS'));
insert into status values (5,102,'REVIEW','DEF',to_date('21-JAN-2007 11:33:25','DD-MON-YYYY HH:MI:SS'));
insert into status values (6,102,'CANCEL','GHI',to_date('21-JAN-2007 11:33:25','DD-MON-YYYY HH:MI:SS'));
insert into status values (7,103,'ENTER','ABC',to_date('21-JAN-2007 11:21:14','DD-MON-YYYY HH:MI:SS'));We have different status as follows
1. ENTER
2. REVIEW
3. APPROVE
4. CANCEL
5. REJECT
My requirement ..
I need the max of created_id column for the status in ('APPROVE','CANCEL') and if there is no status in ('APPROVE','REVIEW') than it should be NULL.
I wrote an SQL as
select account_id,max(created_id) keep (dense_rank first order by decode(status_cd,'APPROVE',created_dt,'REVIEW',created_dt,NULL) DESC NULLS LAST,
decode(status_cd,'APPROVE',status_id,'REVIEW',status_id,NULL) DESC NULLS LAST) last_app_rev_user
from status
group by account_id and gives me the output like
ACCOUNT_ID LAST_APP_R
101 GHI
102 DEF
103 ABCBut I want the Output like
ACCOUNT_ID LAST_APP_R
101 GHI
102 DEF
103 NULLAs the account 103 has no status called 'REVIEW' and 'APPROVE'
My DB Version in 10.2.0.3.0.
Hope I explain it properly. And if you have any other option without dense_rank still i will be happy.
Thanks in advance for your help.
AB
null
Message was edited by:
ABinstead of max(created_id) keep... use
smth like max(case when status_cd in ('APPROVE','REVIEW') then created_id end) keep... -
Calling pl/sql function in CKM...pls help
Hi,
I have made a call to PL/SQL function in CKM customization. The code is :
declare
L_PMG_VALUE VARCHAR(3);
begin
L_PMG_VALUE:='PMG';
VALIDATE_PMG_VALUE(L_PMG_VALUE);
end;
When i run it, it throws error which says:
6550 : 65000 : java.sql.SQLException: ORA-06550: line 1, column 64:
PLS-00221: 'VALIDATE_PMG_VALUE' is not a procedure or is undefined
ORA-06550: line 1, column 64:
PL/SQL: Statement ignored
Function is compiled in the database and its working. I have selected the Technology as Oracle and correct Schema Name.
Please helpHi,
try the following way. i have not tried ....i think it helps you.
In which schema you have created that procedure.
Does the ODI user mantioned in topology have execute permissions on the procedure? if the ODI user have execute previlage on the procedure then in CKM customisation call the procedure like <schema>.<procedure>.
Please let me know any issues.
Thanks, -
Help w/MaxDB Function; also: how does the "Debug SQL" function work?
Hi there forum folks,
In my former life, I was a Basis guy, but I haven't had the pleasure of working directly with SAP applications in a few months. My current project is to attempt to use MaxDB in a real estate environment. We're tracking home listings so that we can build statistical reports... such as "what agents are in the Top 100 in postal code X?"
Anyway, as part of this project, I have attempted to construct my very first MaxDB database function. Unfortunately, it doesn't give me the answers I'm hoping to see. Here's the function:
CREATE FUNCTION COUNT_LISTINGS (AGENTID CHAR(10)) RETURNS FIXED(6,1) AS
VAR COLISTINGAGENTID CHAR(10);
LISTINGAGENTID CHAR(10);
MLSNUMBER CHAR(7);
UNITS FIXED(6,1);
SET UNITS = 0;
DECLARE FUNCTIONRESULT CURSOR FOR
SELECT MLSNUMBER,
LISTINGAGENTID,
COLISTINGAGENTID FROM FREDDIE.GLAR_SOLDS
WHERE LISTINGAGENTID = :agentid OR COLISTINGAGENTID = :agentid;
IF $COUNT IS NULL THEN
BEGIN
CLOSE FUNCTIONRESULT;
RETURN UNITS;
END
ELSE
SET $RC = 0;
WHILE $RC = 0 DO BEGIN
FETCH FUNCTIONRESULT INTO :mlsnumber, :listingagentid, :colistingagentid;
IF ( LISTINGAGENTID = AGENTID AND COLISTINGAGENTID IS NULL ) OR
( COLISTINGAGENTID = AGENTID AND LISTINGAGENTID IS NULL ) THEN
SET UNITS = UNITS + 1
ELSE
SET UNITS = UNITS + 0.5;
END;
CLOSE FUNCTIONRESULT;
RETURN UNITS;
I've tried to follow the official MaxDB documentation. My first deviation from that standard was the use of the "$COUNT" variable (instead of the "$RC" variable) immediately after the DECLARE/SELECT statement above. When I tried to use $RC, for either a successful or unsuccessful query, $RC was always set to a non-zero value.
I believe I'm past that, but now my issue is down around that FETCH statement. The UNITS variable doesn't end up with the value I expect. I know that it can be terribly confusing to try to analyze someone else's logic, but here's a brief narrative that describes what I'm trying to do...
The GLAR_SOLDS table holds one line for each home sold. It's keyed by the MLSnumber. Each record also stores up to four agents who've been involved in the transaction: the listing agent, the co-listing agent, the selling agent, and the co-selling agent. The database function I've written above pertains to the listing side only. If I can get this to work, a separate function will process the selling side. If no co-listing agent is involved in a given sell, that agent should get credit for 1 unit sold. If he/she has help from a co-listing agent, the agent should only get credit for 1/2 unit sold.
Also, does anyone know how the "Debug SQL" functionality is supposed to work within Database Studio? When I right-mouse click on my function, and follow the path thru "Debug As...", after entering the connection & function arguments, I'm presented with an empty screen. If you could point me to some documentation somewhere, I'd gratefully read it.
I'm using MaxDB 7.7.06.09 on Windows XP (WIN32) with MaxDB Database Studio 7.7.06.09 (build 009-123-202-944).
Thanks everyone for your help & advice.
~FredFred,
please either provide the full SQL statements for your example or stick with mine.
I'm not going to build it up myself a second time to suit yours now.
> But now, my issue is how do I store the resultant data in its own table?
So where is the problem?
INSERT INTO <target table> (field 1, field 2, ...) (<your query>) UDPATE DUPLICATES-
With my tables this looks like this:
create table sell_result (list_agent varchar(20) primary key, SUM_CREDIT fixed (10,2))
insert
into sell_result (list_agent,sum_credit)
( select list_agent, sum (credit) as SUM_CREDIT
from ( select sh.object_id,lag.name as list_agent, 1 as credit
from soldhomes sh join agents lag on lag.id = sh.list_agent_id
union all
select sh.object_id, lag.name as list_coagent, 0.5 as credit
from soldhomes sh join agents lag on lag.id = sh.list_coagent_id
group by list_agent
update duplicates
Check what we have now
sqlcli db770=> select * from sell_result
| LIST_AGENT | SUM_CREDIT |
| -------------------- | ----------------- |
| Lars | 4.50 |
| Lisa | 3.00 |
| Mona | 2.50 |
| Paul | 2.50 |
4 rows selected (600 usec)
Now add some sales data...
Insert into soldhomes values (11, 1, 2, NULL, NULL)
Insert into soldhomes values (12, 2, NULL, NULL, NULL)
Insert into soldhomes values (13, 2, NULL, NULL, NULL)
Re-run the INSERT command and you're done:
sqlcli db770=> select * from sell_result
| LIST_AGENT | SUM_CREDIT |
| -------------------- | ----------------- |
| Lars | 5.50 |
| Lisa | 3.00 |
| Mona | 5.00 |
| Paul | 2.50 |
4 rows selected (390 usec)
Neat, isn't it? -
Hi, I am trying to write a sql query to replace the string starting with '<' with NULL. Right now I am using CASE statement to replace with NULLs. Is there any function to replace with NULLs for all the strings starting with '<%'.
Example:
CASE When field_name LIKE '<%' then NULL else field_name
(before) After
<NA> NULL
<UK> NULL
I want to replace the above sql suery with a single sql function without using CASE statements.
I tried to use REPLACE function, but it replaces only single character. I want to replace the whole string
Thanks in advance.Hi,
Adam Martin posted a good solution. I hope that it is clear to you that you have to replace the string '<NA>' with your column(s).
I.e.:
SELECT REGEXP_REPLACE (a.col1, '^<.?+', '') AS col1
, REGEXP_REPLACE (a.col2, '^<.?+', '') AS col2
FROM table1 a;
{code}
You can use also the DECODE and SUBSTR functions to have the same result:
The code below will get the first character with SUBSTR function and the DECODE function will return NULL if the value of the first character is "<" otherwise the value of the column.
{code:sql}
SELECT DECODE(SUBSTR(a.col1,1,1),'<', NULL, a.col1) AS col1
, DECODE(SUBSTR(a.col2,1,1),'<', NULL, a.col2) AS col2
FROM table1 a;
{code}
but using REGEXP_REPLACE is easier to write. -
LOOP in PL/SQL Function Body Help Needed
I have a PL/SQL function that I'm trying to run and use a LOOP but I'm having some problems. I know the loop works since it output's two commas for me, which is how many records the query used for the LOOP returns, but I can't seem to find the right syntax to reference the column.
DECLARE
str VARCHAR2(2000) := "";
BEGIN
IF :P21_GLOBAL_ID IS NOT NULL THEN
FOR q IN (
SELECT
ID,
DRAW_DATE,
ENTERED_BY
FROM
SAMPLE_T
WHERE
ID = :P21_GLOBAL_ID
ORDER BY
DRAW_DATE
LOOP
str := str || q.ID || ',' ;
END LOOP;
END IF;
RETURN STR
END;I just sent you the credentials.
Interestingly, I have this same code for the source of a textarea on the page and the source for a report. I then modified the PL/SQL code as follows:
DECLARE
varSelect VARCHAR2(32767) := ''; --hold query SELECT definition
varFrom VARCHAR2(32767) := ''; --hold query FROM clause definition
varWhere VARCHAR2(32767) := ''; --hold query WHERE clause definition
varOrderBy VARCHAR2(32767) := ''; --hold query ORDER BY clause definition
varQuery VARCHAR2(32767) := ''; --hold query definition
BEGIN
IF TRIM(LOWER(TO_NUMBER(:P21_GLOBAL_TEMPLATE_ID))) IS NOT NULL THEN
varSelect := 'SELECT SUBJECT_ID';
varSelect := varSelect || ', SUBJECT_ID AS PHI';
varSelect := varSelect || ', SUBJECT_ID AS ENTER_DATA';
varSelect := varSelect || ', SUBJECT_ID AS LOGISTICA';
for varTempQuery IN (
SELECT
stc.question_name as field_name,
sti.read_security,
sti.write_security,
nvl(sti.validation_type,decode(stc.validation_rules,'None','TEXT_FIELD')) as validation_type,
sti.html_caption,
nvl(upper(sti.html_display_type),'TEXTFIELD') as html_display_type,
sti.html_table_row,
sti.html_table_column
FROM
rix.study_subject_templates sst,
rix.study_subject_Template_items sti,
rix.questions stc
WHERE
TRIM(LOWER(TO_NUMBER(sst.ss_template_Id))) = TRIM(LOWER(TO_NUMBER(:P21_GLOBAL_TEMPLATE_ID)))
AND TRIM(LOWER(TO_NUMBER(sst.ss_Template_id))) = TRIM(LOWER(TO_NUMBER(sti.ss_Template_id)))
AND TRIM(LOWER(TO_NUMBER(sti.phi_qid))) = TRIM(LOWER(TO_NUMBER(stc.qid)))
AND TRIM(LOWER(TO_CHAR(sti.template_item_Status))) <> TRIM(LOWER(TO_CHAR('RETIRED')))
ORDER BY
sti.html_Table_row,
sti.html_table_column
LOOP
varSelect := varSelect || ', ' || varTempQuery.field_name;
END LOOP;
varFrom := 'FROM RIX.SUBJECTS';
varWhere := 'WHERE STUDY_ID = ' || TRIM(LOWER(TO_NUMBER(:P21_STUDY_ID )));
varOrderBy := 'ORDER BY';
varOrderBy := varOrderBy || ' subject_label ';
varQuery := varSelect || ' ' || varFrom || ' ' || varWhere || ' ' || varOrderBy;
ELSE
varQuery := 'SELECT SUBJECT_ID FROM SUBJECTS WHERE study_id = :P21_STUDY_ID;';
END IF;
RETURN varQuery;
END;
When I run the page now, the textarea has the SQL statement generated from the first IF block, but the report using the statement from the ELSE block. I thought it maybe was a timing issue, but both blocks reference other fields on the page, so it doesn't seem to be a timing issue. Shouldn't be a condition issue either with the IF block as the textarea and report use the same source, but are evaluating differently.
Very odd (to me at least). -
Help with Date function in sql query....
My question I guess is really 2...I'm trying to use the date function as a comparison in my WHERE clause in my sql command.
1. My date format is dd-MMM-yy eg. (01-Apr-06) ... my problem is the Apr is lower case where my field in the database is 01-APR-06 so when I compare 01-Apr-06 to 01-APR-06 is doesnt find any rows. Is there away that I can make the Apr all upper case so that it is APR.
2. My second problem is getting this "date" field to work in my sql stmt I keep getting errors and it works fine if I take my attempts at trying to compare the date.
--------------Date Code----------------------------------------------------------
<%!
String getFormattedDate(java.util.Date d)
SimpleDateFormat simpleDate = new SimpleDateFormat("01-MMM-yy");
return simpleDate.format(d);
%>
<%
java.util.Date d = new java.util.Date();
String dateString = getFormattedDate (d);
%>
---------------------------Sql statment------------------------------------------
ResultSet rset = stmt.executeQuery ("SELECT name " + " FROM table where rdate = '01-APR-06' order by name ");
Currently Im just hard coding the date but I need to make it so it uses the date code...so....
rdate should equal the date from the formatted date in upper case
something like
rdate = <%= dateString %>
Thanks in advance for any ideas anyone may have...There are sql functions upper & lower.
SELECT name FROM table where upper(rdate) = '01-APR-06' order by name Or you could convert the date to a string, and use the toUpperCase & toLowerCase java.lang.String methods. It doesn't make much of a difference--do you want the java compiler to do the string conversion or the database? -
PL/SQL function body returning SQL - report error:ORA-01403: no data found
Hi,
I am working on Application Express 4.0.2.00.06, and 11G database.
I have a problem with classic report area of type - PL/SQL function body returning SQL query. Query works if I define region area as - Use Generic Column Names (parse query at runtime only), and does not when I define it - Use Query-Specific Column Names and Validate Query.
I am getting error:
report error:ORA-01403: no data found
This is my query that is returned from function, and displayed with htp.p, and it works ok and returns data in SQL Developer and SQL Workshop (in Apex).
<code>
/* select 1 from dual */ SELECT SIFPRO, NAZIV, VODITELJ, DATPZA,SUM(DECODE(TJEDAN,'2010/46',BRDJEL,null)) as "2010/46" ,SUM(DECODE(TJEDAN,'2010/49',BRDJEL,null)) as "2010/49" ,SUM(DECODE(TJEDAN,'2010/50',BRDJEL,null)) as "2010/50" ,SUM(DECODE(TJEDAN,'2010/51',BRDJEL,null)) as "2010/51" ,SUM(DECODE(TJEDAN,'2010/52',BRDJEL,null)) as "2010/52" ,SUM(DECODE(TJEDAN,'2011/01',BRDJEL,null)) as "2011/01" ,SUM(DECODE(TJEDAN,'2011/02',BRDJEL,null)) as "2011/02" ,SUM(DECODE(TJEDAN,'2011/03',BRDJEL,null)) as "2011/03" ,SUM(DECODE(TJEDAN,'2011/04',BRDJEL,null)) as "2011/04" ,SUM(DECODE(TJEDAN,'2011/05',BRDJEL,null)) as "2011/05" ,SUM(DECODE(TJEDAN,'2011/06',BRDJEL,null)) as "2011/06" ,SUM(DECODE(TJEDAN,'2011/07',BRDJEL,null)) as "2011/07" ,SUM(DECODE(TJEDAN,'2011/08',BRDJEL,null)) as "2011/08" ,SUM(DECODE(TJEDAN,'2011/09',BRDJEL,null)) as "2011/09" ,SUM(DECODE(TJEDAN,'2011/10',BRDJEL,null)) as "2011/10" FROM (SELECT * FROM PMV_PLAN_TVRTKA) GROUP BY SIFPRO, NAZIV, VODITELJ, DATPZA ORDER BY SIFPRO, NAZIV, VODITELJ, DATPZA
</code>
As you can see, I even tried with workaround that I found on the previous post on the forum, and that is to put /* select 1 from dual */ to start query.
Any help would be appriciated./* select 1 from dual */ SELECT SIFPRO, NAZIV, VODITELJ, DATPZA,SUM(DECODE(TJEDAN,'2010/46',BRDJEL,null)) as "2010/46" ,SUM(DECODE(TJEDAN,'2010/49',BRDJEL,null)) as "2010/49" ,SUM(DECODE(TJEDAN,'2010/50',BRDJEL,null)) as "2010/50" ,SUM(DECODE(TJEDAN,'2010/51',BRDJEL,null)) as "2010/51" ,SUM(DECODE(TJEDAN,'2010/52',BRDJEL,null)) as "2010/52" ,SUM(DECODE(TJEDAN,'2011/01',BRDJEL,null)) as "2011/01" ,SUM(DECODE(TJEDAN,'2011/02',BRDJEL,null)) as "2011/02" ,SUM(DECODE(TJEDAN,'2011/03',BRDJEL,null)) as "2011/03" ,SUM(DECODE(TJEDAN,'2011/04',BRDJEL,null)) as "2011/04" ,SUM(DECODE(TJEDAN,'2011/05',BRDJEL,null)) as "2011/05" ,SUM(DECODE(TJEDAN,'2011/06',BRDJEL,null)) as "2011/06" ,SUM(DECODE(TJEDAN,'2011/07',BRDJEL,null)) as "2011/07" ,SUM(DECODE(TJEDAN,'2011/08',BRDJEL,null)) as "2011/08" ,SUM(DECODE(TJEDAN,'2011/09',BRDJEL,null)) as "2011/09" ,SUM(DECODE(TJEDAN,'2011/10',BRDJEL,null)) as "2011/10" FROM (SELECT * FROM PMV_PLAN_TVRTKA) GROUP BY SIFPRO, NAZIV, VODITELJ, DATPZA ORDER BY SIFPRO, NAZIV, VODITELJ, DATPZA
-
SQL, PL/SQL Expression and PL/SQL function
In a Post Calculation Computation field I wanted the following computation:
if B is X
then
field = A
else
field = B
end if;
or as a decode
Decode(B,X,A,B)
I could not get this to work so I wrote a database function that simulates the decode. So when I put:
My_decode(B,X,A,B)
in the field it did work.
Basically I am not sure what kind of code one is expected to put into SQL, PL/SQL Expression and PL/SQL function fields. Can someone give an example of each? Also the APEX help is sometimes incorrect.
For example if you click the "Post Calculation Computation" label it says:
The For example, if this item is named P1_X, you could use post calculation expressions such as UPPER(:P1_X), INITCAP(:P2_Y), MIN(:P1_X,:P2_Y-200), NVL(:P1_X,:P2_Y), or a function call such as return my_func(:P1_X); to set the final value of the item.
But if you put return my_func(:P1_X); in the field you get an error. It should be just my_func(:P1_X);
thanks ReneDECODE is only available in SQL, so would have to be used in a SQL Expression.Yes, that's what APEX keeps telling me when I use in in a field that has "SQL or PL/SQL expression" above it. So what do you put in the field?
-
Problem to create a link with parameters using a PL/SQL function body
Hi everybody,
I need some help to create a link on a SELECT statement.
I have a region report with type "PL/SQL function body return SQL query".
I would like to use a link using HTML tag <a href>.
I know how to do the link, but I don't know to pass a parameters in <a href> statement.
Always I tried it doesn't work well.
My PL/SQL anonimous block is, (just with link) :
DECLARE
q vARCHAR2(4000);
BEGIN
q:='select "INDICADOR"."NRINDICADOR" as "NRINDICADOR",';
q:=q||' "INDICADOR"."DSINDICADOR" as "DSINDICADOR",';
q:=q||'''<span style="font-weight:bold;">';
q:=q||'''||TO_CHAR("TOTAL_INDICADOR"."VL_INDICADOR", ''999G999G999G990D00'')||''</span>''';
q:=q||' as "VL_INDICADOR",';
q:=q||' "TOTAL_INDICADOR"."VL_META" as "VL_META" ';
q:=q||' from "TOTAL_INDICADOR" "TOTAL_INDICADOR",';
q:=q||' "INDICADOR" "INDICADOR" ';
q:=q||' where "INDICADOR"."NRINDICADOR"="TOTAL_INDICADOR"."NR_INDICADOR"';
RETURN q;
END;
Thanks for any help,
AlessandraYour code is in a default value for an item, right?
You need to make sure :P33_YEAR is not null and handle the error in the PL/SQL if it is.
How is P33_YEAR populated? do you pass it in? check to see if it is making it there..
Message was edited by:
Bill Carlisle -
Problem with empty report parameters when passed to PL/SQL function
Hi,
We have come across what appears to be a bug in the JRC. When passing a report parameter to a PL/SQL function as a parameter, empty parameters are changed before being sent to the function. More specifically, an empty string "" ends up as the value "(')" in the PL/SQL function parameter. In our report we print the report parameters on the first page so we know that the parameters are OK before being passed to the database.
The problem exists for version 12.2.203, 12.2.204 and 12.2.205 of the JRC.
We have identified a workaround, but it is not exactly elegant: Before executing the report we modify all empty parameters ("") to " " . In the PL/SQL function, we trim all parameters before using them.
We call the function using a command object with a sql syntax like this example:
select * from table (qa_batch_release.get_qa_br('{?p_report_id}','{?p_reg_set_number}','{?p_cr_number}','{?p_change_id_decode}','{?p_country_id}','{?p_mfg_item_no}','{?p_4_no}','{?p_5_no}','{?p_7_no}'))
The PL/SQL function is a table returning function.
Best regards, ThorHi Kishore,
using #COLUMN_VALUE# would probably not make much sense, because normally a report has multiple columns and not just the numeric column which you want to verify if it's negative. But APEX will fire the template condition for each column, because the report template is a column cell template.
What you can do to make it more generic is to use for example
#CHECK_AMOUNT#
in the template and provide a not displayed column in your SQL statement which contains your value which is named CHECK_AMOUNT. For example:
SELECT NAME
, BALANCE
, BALANCE AS CHECK_AMOUNT
FROM XXX;Because this CHECK_AMOUNT column would be a generic name, you can use this template in all your reports as long as you provide this column.
Thope that helps
Patrick
Maybe you are looking for
-
I get the message that these songs and movies are not authorized to play on this computer. The computer is authorized and the songs and movies will play on the computer but will not sync to Apple TV Any advice is aproeciated.
-
When installing the latest version of Flashplayer I am asked to close Spotify help EH. Where can I find this application to be able to close it?
-
Photoshop crashes each time i start it and it then does not respond and after 3 to 4 min sarts
On starting photoshop on my macbook pro it crashes and does not respond and only after 4 minutes does it start, does any one have any suggestions on how to fix this as it is annoying to always have to wait for photoshop to start
-
Only Remaining var. in version 0 - no target cost for order
Hi, I am getting the error message "Only remaining var. in version 0 - no target costs for 000060003328" while performing the Variance Calculation in KKS2 transaaction. The order is having status DLV and TECO. Kidny give your suggestions Thanks and r
-
I would like to have at least one of my toolbars displayed at the '''BOTTOM''' of my open browser screen. How do I move '''a''' toolbar from the top to the bottom of the page? I do NOT want to do this by using an extension, and when I read about the