SQL Query using Subquery to get the difference in budget versions
Hi
I am using the following query to find the difference between revenue budget changes from the previous version to latest version. However the second subquery is not working. Has somebody done a similar query before? Any help?
select distinct b.name, b.segment1, a.version_number , a.version_name, a.change_reason_code, a.revenue, f.revenue, a.creation_date, d.full_name
from PA_BUDGET_VERSIONS a, pa_projects_all b, fnd_user c, per_all_people_f d,PA_BUDGET_VERSIONS f
where a.project_id = b.project_id
and a.created_by = c.user_id
and c.employee_id = d.person_id
and a.budget_type_code = 'AR'
and a.budget_status_code = 'B'
and b.org_id in (147,707,140)
and a.version_number in (select max(e.version_number) from PA_BUDGET_VERSIONS e where e.budget_version_id = a.budget_version_id
and a.project_id = e.project_id)
and a.budget_version_id = f.budget_version_id
and f.version_number in (Select max(g.version_number) from PA_BUDGET_VERSIONS g where f.budget_version_id = g.budget_version_id
and f.project_id = g.project_id and g.version_number < a.version_number)
and a.creation_date between '01-JAN-09' and '30-JAN-09'
order by b.segment1;
Analytic functions to the rescue! (Now you'll only have one pass through the pa_budget_version table, instead of four!)
Something like this, perhaps (assuming version_numbers are unique per project_id and budget_version_id):
WITH a AS (SELECT project_id,
version_number,
version_name,
change_reason_code,
creation_date,
revenue,
row_number() over (partition by project_id, budget_version_id
order by version_number desc) rn,
lag(revenue) over (partition by project_id, budget_version_id
order by version_number desc) prev_ver_revenue
FROM pa_budget_versions
WHERE budget_type_code = 'AR'
AND budget_status_code = 'B'
AND creation_date BETWEEN to_date('01/01/2009', 'dd/mm/yyyy')
AND to_date('30/01/2009', 'dd/mm/yyyy'))
SELECT DISTINCT b.name,
b.segment1,
a.version_number,
a.version_name,
a.change_reason_code,
a.revenue,
a.prev_ver_revenue,
a.creation_date,
d.full_name
FROM a,
pa_projects_all b,
fnd_user c,
per_all_people_f d
WHERE a.project_id = b.project_id
AND a.created_by = c.user_id
AND c.employee_id = d.person_id
AND b.org_id IN (147, 707, 140)
ORDER BY b.segment1;NB. untested.
Similar Messages
-
How to obtain the transformed SQL query using SEM_MATCH
Dear all,
Is it possible to get the transformed relational SQL query when using the SEM_MATCH prefix, by querying directly on the database. We are able to obtain the relational SQL query using Joseki/Jena, however this is not the way to go for us. We would like (if possible) to get it straight from the oracle database by logging or something.
Kind regards.
MaxHi Max,
Just to clarify. What SEM_MATCH prefix are you talking about?
A SEM_MATCH based query is indeed a SQL query as SEM_MATCH is a SQL table function. So if you don't want to go through Java APIs or web service endpoint, then running SEM_MATCH directly should give you what you need. Or maybe you just want to see the underlying generated (from SEM_MATCH) SQL query. If that is true, can you please tell us why?
Thanks,
Zhe Wu -
Query to get the difference between 2 totals from 2 different queries
I wanted to know if it is possible to get the difference between 2 totals from 2 different queries. I would explain with an example:
1st query - Select sum(homepass) from table 1
2nd query – select sum(homepass) from table2
Is it possible to display the difference like-
Select sum(homepass) from table 1 - sum(homepass) from table2
I know the above query would gives syntax error but is there a better way or a trick to get the above task accomplished from a single query.
I hope, my question is clear.
Please revert with the reply to my query.
Regardstomernitin wrote:
Try this one also:
WITH adtn1
AS
SELECT 110 val1 FROM dual UNION ALL
SELECT 100 FROM dual UNION ALL
SELECT 90 FROM dual UNION ALL
SELECT 10 FROM dual
adtn2
AS
SELECT 10 val2 FROM dual UNION ALL
SELECT 20 FROM dual UNION ALL
SELECT 30 FROM dual UNION ALL
SELECT 100 FROM dual
SELECT(Sum(a1.val1)-Sum(a2.val2)) Diff FROM adtn1 a1,adtn2 a2;
let me know if you still have any doubt.
Um.... I don't think so. Not with the cartesian join between a1 and 2. -
Query on 0TCT_MC01 to get the last used date of a query
Dear All,
I tried to create a query on 0TCT_MC01 to get the last used date of a query.
Since we do not have readily available key figure for Last used date, could any one help me out to achieve this result?
I am interested to find the old queries which are not being used anymore.
Thanks in advance.You can get the info from the below tables
if you are working with BW 3.5 you can look in table RSDDSTAT in BI 7.0 it is RSDDSTAT_OLAP.
Make a selction on the infocube and the OLAP Statistic Object which is the query ID and execute. Then you should see how often the query was executed, by whom and which date/time.
in field Statistics Object Name Query ID you type in the tech name of the query
from the Counter for statistics event calls -- will give the count... no of times the query used least the count lesser the query is used.
Regards
KP
Edited by: Konduru Prashanth. on Dec 22, 2011 2:44 PM -
Can Portal Report from SQL Query use where column IN (:bind_variable)
I would like to create a portal report from sql query with IN (:bind_variable) in the where clause. The idea is that the user would enter comma-separated or comma-quote-separated values for the bind_variable. I have tried this several ways but nothing seems to work. Can this be done?
TrentonHi,
Which version of portal are you using. This is a bug. It has been fixed in 30984.
Thanks,
Sharmila -
Can we implement the custom sql query in CR for joining the two tables
Hi All,
Is there anyway to implement the custom sql query in CR for joining the two tables?
My requirement here is I need to write sql logics for joining the two tables...
Thanks,
GanaIn the Database Expert, expand the Create New Connection folder and browse the subfolders to locate your data source.
Log on to your data source if necessary.
Under your data source, double-click the Add Command node.
In the Add Command to Report dialog box, enter an appropriate query/command for the data source you have opened.
For example:
SELECT
Customer.`Customer ID`,
Customer.`Customer Name`,
Customer.`Last Year's Sales`,
Customer.`Region`,
Customer.`Country`,
Orders.`Order Amount`,
Orders.`Customer ID`,
Orders.`Order Date`
FROM
Customer Customer INNER JOIN Orders Orders ON
Customer.`Customer ID` = Orders.`Customer ID`
WHERE
(Customer.`Country` = 'USA' OR
Customer.`Country` = 'Canada') AND
Customer.`Last Year's Sales` < 10000.
ORDER BY
Customer.`Country` ASC,
Customer.`Region` ASC
Note: The use of double or single quotes (and other SQL syntax) is determined by the database driver used by your report. You must, however, manually add the quotes and other elements of the syntax as you create the command.
Optionally, you can create a parameter for your command by clicking Create and entering information in the Command Parameter dialog box.
For more information about creating parameters, see To create a parameter for a command object.
Click OK.
You are returned to the Report Designer. In the Field Explorer, under Database Fields, a Command table appears listing the database fields you specified.
Note:
To construct the virtual table from your Command, the command must be executed once. If the command has parameters, you will be prompted to enter values for each one.
By default, your command is called Command. You can change its alias by selecting it and pressing F2. -
How to get the difference of two dates in years,months and days
Hi friends,
how to get the difference of two dates in years,months and days
for ex 2 years 3 months 13 days
select (sysdate-date_Start) from per_periods_of_service
thanksSomething like this...
SQL> ed
Wrote file afiedt.buf
1 with t as (select to_date('17-nov-2006','dd-mon-yyyy') as c_start_date, to_date('21-jan-2008','dd-mon-yyyy') as c_end_date from dual union all
2 select to_date('21-nov-2006','dd-mon-yyyy'), to_date('17-feb-2008','dd-mon-yyyy') from dual union all
3 select to_date('21-jun-2006','dd-mon-yyyy'), to_date('17-jul-2008','dd-mon-yyyy') from dual
4 )
5 -- end of test data
6 select c_start_date, c_end_date
7 ,trunc(months_between(c_end_date, c_start_date) / 12) as yrs
8 ,trunc(mod(months_between(c_end_date, c_start_date), 12)) as mnths
9 ,trunc(c_end_date - add_months(c_start_date, trunc(months_between(c_end_date, c_start_date)))) as dys
10* from t
SQL> /
C_START_D C_END_DAT YRS MNTHS DYS
17-NOV-06 21-JAN-08 1 2 4
21-NOV-06 17-FEB-08 1 2 27
21-JUN-06 17-JUL-08 2 0 26
SQL>But, don't forget that different months have different numbers of days, and leap years can effect it too. -
How to get the difference between two columns in a column group
Hi All,
My first time here and really new to programming. I would like to get the difference between 2 columns that are inside
a column group.
Here is my sample table below: The Column Group is PeriodNumber and can only choose 2. like 1 and 2.. I would like to have a third row which will simply calculate the difference between the amounts in PeriodNumber 1 and 2.
PeriodNumber
Account 1 2
1) Cash 10,000 15,000
2) Receivables 12,000 11,500
3) Equipment 5,000 5,500
Total Assets 27,000 32,000Hi yabgestopa,
From your description, you want to get the difference between two columns in a column group. After testing it in my environment, we can use custom code to achieve your requirement. For more details, you can refer to the following steps:
Copy the custom code below and paste it to your report. (Right-click report>Report Properties>Code)
Dim Shared Num1 As Integer
Dim shared Num2 As Integer
Public Function GetAmount(Amount as Integer, Type as String)
If Type = "1" Then
Num1=Amount
Else
Num2=Amount
End If
Return Amount
End Function
Public Function GetDif()
Return Num1-Num2
End function
Right-click the second column to insert a third column with Outside Group-Right.
Then use the expressions below in the matrix.
=Code.GetAmount(Fields!Amount.Value,Fields!PeriodNumber.Value)
=code.GetAmount(Sum(Fields!Amount.Value),Fields!PeriodNumber.Value)
=Code.GetDif()
The report looks like below.
If you have any questions, please feel free to ask.
Thanks,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
Set TIMEOUT on OCCI sql query using ?
Is there a way to set a timeout on a sql query using OCCI ?
OCCI does not provide an API to set timeouts on SQL Queries.
You can use the CREATE PROFILE command and assign resources at
a user level. The restrictions may be applied to memory/resources which
in turn would control the SQL execution time. Please check the
CREATE PROFILE command.
Rgds
Amogh -
Do we have a way to get the differences between xtext model before and after partial parse?
Do we have a way to get the differences between xtext model before and after partial parse?
As an example i have file contains 4 lines, xtext parsed this file and generated its model, then i made small modification in line number 3, so xtext partially parsed the file and generated another model.
The question is could we get the nodes that has been deleted from the model?
could we get the new nodes added to the model?
could we get the differences between the two models?Workflow {
bean = StandaloneSetup {
scanClassPath = true
platformUri = "${runtimeProject}/.."
// The following two lines can be removed, if Xbase is not used.
registerGeneratedEPackage = "org.eclipse.xtext.xbase.XbasePackage"
registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
component = ParseXextModel{
//Load the xtext model and keep the reference of the inmem model
component = DirectoryCleaner {
directory = "${runtimeProject}/src-gen"
component = DirectoryCleaner {
directory = "${runtimeProject}/model/generated"
component = DirectoryCleaner {
directory = "${runtimeProject}.ui/src-gen"
component = DirectoryCleaner {
directory = "${runtimeProject}.tests/src-gen"
component = Generator {
pathRtProject = runtimeProject
pathUiProject = "${runtimeProject}.ui"
pathTestProject = "${runtimeProject}.tests"
projectNameRt = projectName
projectNameUi = "${projectName}.ui"
encoding = encoding
language = auto-inject {
uri = grammarURI
// Java API to access grammar elements (required by several other fragments)
fragment = grammarAccess.GrammarAccessFragment auto-inject {}
// provides a compare view
fragment = compare.CompareFragment auto-inject {}
component = ParseXextModel{
//Load the xtext model again and keep the reference of the inmem model
component = CompareModel {
//Implement this using EMF Comapre to see the differnces between 2 models
} -
How to find sql query using sqlid
Hi
I am not aware of that sqlid .DBA is saying a particular sqlid is making problem .how to find the particular sql query using sql_id ?Are you aware of modplsql when i executed the query the result is like
DECLARE
rc__ NUMBER;
simple_list__ OWA_UTIL.vc_arr;
complex_list__ OWA_UTIL.vc_arr;
BEGIN
OWA.init_cgi_env (:n__, :nm__, :v__);
HTP.htbuf_len := 84;
NULL;
NULL;
simple_list__ (1) := 'sys.%';
simple_list__ (2) := 'dbms\_%';
simple_list__ (3) := 'utl\_%';
simple_list__ (4) := 'owa\_%';
simple_list__ (5) := 'owa.%';
simple_list__ (6) := 'htp.%';
simple_list__ (7) := 'htf.%';
simple_list__ (8) := 'wpg_docload.%';
IF ((owa_match.match_pattern ('Oly_browse.oly_pattern ',
simple_list__,
complex_list__,
TRUE
THEN
rc__ := 2;
ELSE
NULL;
NULL;
oly_browse.oly_pattern (search_phrase => :search_phrase, --Oly_browse.oly_pattern is package name
btn => :btn,
p_qual => :p_qual,
p_bcat => :p_bcat,
p_stdy => :p_stdy,
p_bloc => :p_bloc,
z => :z
IF (WPG_DOCLOAD.is_file_download)
THEN
rc__ := 1;
WPG_DOCLOAD.get_download_file (:doc_info);
NULL;
NULL;
NULL;
COMMIT;
ELSE
rc__ := 0;
NULL;
NULL;
NULL;
COMMIT;
OWA.get_page (:data__, :ndata__);
END IF;
END IF;
:rc__ := rc__;
END; Edited by: vishnu prakash on Sep 8, 2010 10:16 PM -
Getting the difference between 2 dates
Hi,
I am creating a Date object (using today;s day, month and year. hours and minutes come from a config file) and getting the difference between this date and the current date and time.
My code is as follows:
I am passing 07:30 into the method as the parameter aSstart_time.
Calendar newCalendar = Calendar.getInstance(Locale.UK);
SimpleDateFormat dtformat = new SimpleDateFormat("dd-MM-yy HH:mm");
int lIYear = newCalendar.get(newCalendar.YEAR);
int lIMonth = newCalendar.get(newCalendar.MONTH);
int lIDay = newCalendar.get(newCalendar.DAY_OF_MONTH);
String lSstartHrs = aSstart_time.substring(0,aSstart_time.indexOf(":"));
//System.out.println(">>>>>>>>> THE HOURS IS: " + lSstartHrs);
String lSstartMins = aSstart_time.substring(aSstart_time.indexOf(":")+1,aSstart_time.length());
//System.out.println(">>>>>>>>> THE MINS IS: " + lSstartMins);
java.util.Date ldStartTime = new java.util.Date(lIYear,lIMonth,lIDay, Integer.parseInt(lSstartHrs),Integer.parseInt(lSstartMins));
System.out.println("Year: " + lIYear);
System.out.println("Month: " + lIMonth);
System.out.println("Day: " + lIDay);
System.out.println("Hour: " + Integer.parseInt(lSstartHrs));
System.out.println("Min: " + Integer.parseInt(lSstartMins));
System.out.println("The number of milliseconds for current time is: " + newCalendar.getTime().getTime());
System.out.println("The number of milliseconds for 07:30 is: " + ldStartTime.getTime());
System.out.println("calendar time: " + dtformat.format(newCalendar.getTime()).toString());
System.out.println("created time: " + dtformat.format(ldStartTime).toString());
if(newCalendar.getTime().getTime() < ldStartTime.getTime()){
System.out.println("The current time is less than the config time (07:30)");
else{
System.out.println("The time is greater than 07:30");
}When I run this program at 10:06am I get the following output:
Year: 2006
Month: 1
Day: 15
Hour: 7
Min: 30
The number of milliseconds for current time is: 1139997962321
The number of milliseconds for 07:30 is: 61098132600000
calendar time: 15-02-06 10:06
created time: 15-02-06 07:30
The current time is less than the config time (07:30)
The Date.gettime() method should measure the number of milliseconds after 01-01-1970 so the number of milliseconds for the current time (10:06am) should be greater than the number of milliseconds for 07:30. A you can see in the above output this is not the case.
Anybody have any idea why this is happening. Am I using the .gettime() method for the correct purpose.
Any ideas or suggestions would be greatly appreciated.
ThanksIt is beacause Calendar use fully defined year as parameter, so Calendar.set(year + 1900, month, date, hrs, min) is (almost) equivalent to new Date(year, month, date, hrs, min)Example: int year = 85; // old way of specifying a year in a Date
int month = 3;
int date = 12;
int hrs = 12;
int min = 0;
Calendar cal = Calendar.getInstance();
cal.set(year + 1900, month, date, hrs, min);
Date d = new Date(year, month, date, hrs, min);
System.out.println(d);
System.out.println(cal.getTime());You will obtain the same date (except seconds and miliseconds in this case, as they probably won't be zero with Calendar.getInstance(); ) -
How to get the difference of two dates?
let's say i have a table named tblData and has 4 columns: data_RefNo, data_DateReported, data_TargetDate, data_Data
tblData returns 2 rows.
data_RefNo.............data_DateReported.............data_TargetDate........................data_Data
10000................10-20-2004 10:55:44 AM........10-20-2004 10:57:44 AM........Slow Response Time
10000................10-21-2004 10:55:44 AM........10-21-2004 11:55:44 AM........Bug Error
i just wana ask how to get the difference of the date_DateReported and date_TargetDate.
i tried this code but it didnot work
public Vector get_con_pf()
Vector vData = new Vector();
String query = "SELECT * FROM tblData WHERE data_RefNo= '"'10000'"'";
try
DBConnect db = new DBConnect();
db.openCon();
ResultSet rs = db.execute(query);
while (rs.next())
vData.addElement(DATEDIFF(mi, rs.getString("st_DateReported"), rs.getString("st_TargetFinishDate")));
db.closeCon();
catch (Exception e)
System.out.println("Error: " + e );
return vData;
i want to return the difference of the data_DateReported and date_TargetDate, i did this
vData.addElement(DATEDIFF(mi, rs.getString("st_DateReported"), rs.getString("st_TargetFinishDate")));but it didnot work.
How do i get that? because i want to return a vector.
the code must return the values:
2 for the 1st rows because the difference is only 2 minutes, and
60 for the 2nd row.ooops i tried this one:
query = "SELECT *, DATEDIFF(mi, data_DateReported, data_TargetDate) AS diff FROM tblData WHERE data_RefNo = '10000'";and it works.
hehehehe!!!!!!
problem solved! :) -
Trying to Get the "Difference" Between Two Tracks
What I am trying to accomplish is this: I have an audio track of a voiceover with a music bed beneath it. I also have the bed music by itsself, without the voiceover. I want only the voice portion. Is there a way that I can "cancel out" the music portion or get the difference between the two tracks (just the voice portion)? It seems that there should be some means of doing this, but for the life of me I cannot figure out how to do it!
Any advice?If it's exactly the same music track, then as long as you line it up sample-accurate and the levels co-incide, you can do a simple subtractive process. You need both files available, trimmed to length. Open them both in Edit View, and copy one of them to the clipboard. Open the other, and select Mix-paste, and use the 'invert' option. That will effectively subtract one from the other, with the difference being your vocal.
Have to tell you though that the chances of getting this spot on are amazingly low... any errors at all leave you with bleed-through, about which you can do nothing. -
Getting the Difference in JTables my algo is messed
Im trying to get the difference of two JTables...in other words if Table B has the rowdata of Table A, then Table C should not have it...Table C should have all the data in Table A - the data in Table B
heres my code:
//in a subclass of JTable
public Object[][] getDifferenceData(JTable table){
DefaultTableModel thisModel = (DefaultTableModel)this.getModel();
DefaultTableModel userModel = (DefaultTableModel)table.getModel();
int differenceRows = thisModel.getRowCount() - userModel.getRowCount();
Object[][] newData = new Object[differenceRows][2];
Object symbol = new Object();
Object description = new Object();
for (int i=0; i<differenceRows; i++){
for (int j=0; j<userModel.getRowCount()-1; j++){
if ((symbol = thisModel.getValueAt(i,0)) != userModel.getValueAt(j,0)){
//symbol in portfolio model != symbol in user portfolio
//so new difference table model should have it
description = thisModel.getValueAt(i,1);
newData[0] = symbol;
newData[i][1] = description;
return newData;
heres what im trying to do
1) new Data[][] is set to size bigger table row count - smaller tables
for all new row size
2)compare table A data in the current row and first column to all the rows/first column of table B
3) if the data is NOT the same, the copy that row data from Table A into a new 2D data vector to the appropriate row
4) return the new data[][] for new jtable creation
but what happens is that the difference table (C) contains the corrent number of rows...but it still contains the data found in table B, and the new table C is just table C with the right number of rows cut off
my algo is severly messed :)
any help would be appreciated..thankshey klepto,
your not using .equals() on the symbol Object, this means that all it is doing is seeing if they refer to the same instance of the object, not if the to instances have the same value.
The other problem is that you presume that the difference of the two collections is based on their respective size. What if they contain totaly different values? Then the total size would be the sum of both collections.
Lets presume that the symbol is a String. Then I would do the following:
//in a subclass of JTable
public Object[][] getDifferenceData(JTable table, DefaultTableModel thisModel, DefaultTableModel userModel){
Object[][] newData = null;
String symbolA = null;
String symbolB = null;
String description = null;
SymbolData symbolData = null;
Vector newList = new Vector();
int nbrRowsA = thisModel.getRowCount();
int nbrRowsB = userModel.getRowCount();
for(int i = 0; i < nbrRowsA; i++) {
symbolA = (String)thisModel.getValue(i, 0);
for(int j = 0; j < userModel.getRowCount() - 1; j++) {
symbolB = (string)userModel.getValue(i, 0);
if(!symbolA.equals(symbolB)){
description = (String)thisModel.getValueAt(i,1);
newList.add(new SymbolData(symbol, description));
if(newList.size() > 0) {
int size = newList.size();
newData = new String[size][2];
for(int i = 0; i < size; i++) {
symbolData = (SymbolData)newList.get(i);
newData[0] = symbolData.getSymbol();
newData[i][1] = symbolData.getDescription();
return newData;
class SymbolData {
String symbol;
String description;
MyDataClass(String symbol, String description) {
this.symbol = symbol;
this.description = description;
String getSymbol() {
return symbol;
String getDescription() {
return description;
String[] getData() {
String[] data = new String[2];
data[0] = symbol;
data[1] = description;
return data;
Hmm, that should do the job. Not the fastest code, I'm sure there
could be some improvements with the array handling. But it should
get you started.
Also I have not attempted to compile the above so I suspect you
will find problems (only on a good day do I get zero compile errors
when I first write something, good days are rare :-) ).
James.
Maybe you are looking for
-
All of my purchases from iTunes are stored on my iPhone and taking up all of my memory. I want to store the music in iCloud if possible, but I can't get it to work. I tried to sync my phone to iTunes, but the library on my computer is all screwed up!
-
PLEASE I NEED HELP QWICK !!! my ipod was really slow so i restart the settings usually it returns normal with all my songs and apps and picture but now it return to the beggining setting like the first day when i got it, i do the language country eve
-
Not able to find JAVA after installation
Dear sir, I would like to install ECC.6 on Red Hat Enterprises Linux 5.0 server for test purpose. I have already completed RHEL installation and perform all the recommendation written in SAP NOTES 171356, 1048303 etc. I have installed JAVA as per the
-
Sending 'Outlook Appointment/Meeting Request' Emails
Is there a way to send an email as a 'Outllook Appointment' from BPM. I've been able to send plain text emails without any problems. Thanks
-
Hide IR Break rows - Floating IR header (ir-header-float plugin)
Greetings, I have a report that is viewed by creating a break on a column that allows the data to be viewed in groups. The "break" column is a numeric column that groups the data so that the groups are broken correctly. I am attempting to eliminate t