Help with query with sub query
hi
I am trying to run the following query and it returns an error as follows:
ORA 00904: ST_ENROLLMENT.absence_reason_code: invalid SQL identfiier.
the code is as follows:
SELECT
ST_ENROLLMENT.student_id,
last_name,
first_name,
date_of_birth,
grade_level AS grade,
gender AS GnDr,
home_phone_number,
absence_reason_code
FROM ST_ENROLLMENT,CE_FAMILY_MEMBER, CE_FAMILY, AT_HOURLY_ATTENDANCE_RECORDS,
(SELECT
COUNT(attendance_status) AS "ConsecutiveDaysAbsent"
FROM AT_HOURLY_ATTENDANCE_RECORDS, ST_ENROLLMENT
WHERE AT_HOURLY_ATTENDANCE_RECORDS.student_id = ST_ENROLLMENT.student_id
AND AT_HOURLY_ATTENDANCE_RECORDS.school_id = ST_ENROLLMENT.school_id
AND AT_HOURLY_ATTENDANCE_RECORDS.school_year = ST_ENROLLMENT.school_year
AND ST_ENROLLMENT.district_number = AT_HOURLY_ATTENDANCE_RECORDS.district_number
AND AT_HOURLY_ATTENDANCE_RECORDS.track_number = ST_ENROLLMENT.track_number
AND AT_HOURLY_ATTENDANCE_RECORDS.absence_reason_code = ST_ENROLLMENT.absence_reason_code
AND AT_HOURLY_ATTENDANCE_RECORDS.student_id = ST_ENROLLMENT.student_id); thanks in advance. I appreciate everybody for their help
To avoid a cartesian product, you need to join the tables which are into the from clause. For this, you need to know the column which must be joined.
If I take, for example, some tables from the very know basic schema scott, and I would like the name of emp and the name of dept for each emp, I will join emp table dept table on a common column.
SCOTT@demo102> desc emp
Name Null? Type
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SCOTT@demo102> desc dept
Name Null? Type
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
SCOTT@demo102> select emp.ename, dept.dname
2 from emp, dept
3 where emp.deptno=dept.deptno;
ENAME DNAME
CLARK ACCOUNTING
KING ACCOUNTING
MILLER ACCOUNTING
JONES RESEARCH
FORD RESEARCH
ADAMS RESEARCH
SMITH RESEARCH
SCOTT RESEARCH
WARD SALES
TURNER SALES
ALLEN SALES
ENAME DNAME
JAMES SALES
BLAKE SALES
MARTIN SALES
14 rows selected.
SCOTT@demo102> HTH,
Nicolas.
Similar Messages
-
Dear Sir/Madam
I'm a student who is interested in Oracle Database and
I have some problems with JOIN and Sub-query.
I hope so many of you could help me.
if i use JOIN without sub-query, may it be faster or not?
SELECT field1, field2 FROM tableA INNER JOIN tableB
if i use JOIN with sub-query, may it be faster or not?
SELECT field1,field2,field3 FROM tableA INNER JOIN (SELECT field1,field2 FROM tableB)
Thanks in advance!Hi,
fac30d8e-74d3-42aa-b643-e30a3780e00f wrote:
Dear Sir/Madam
I'm a student who is interested in Oracle Database and
I have some problems with JOIN and Sub-query.
I hope so many of you could help me.
if i use JOIN without sub-query, may it be faster or not?
SELECT field1, field2 FROM tableA INNER JOIN tableB
if i use JOIN with sub-query, may it be faster or not?
SELECT field1,field2,field3 FROM tableA INNER JOIN (SELECT field1,field2 FROM tableB)
Thanks in advance!
As the others have said, the execution plan will give you a better idea about which is faster.
If you're trying to see how using (or not using) a sub-query affects performance, make the rest of the queries as similar as possible. For example, include field3 in both queries, or ignore field3 in both queries.
In this particular case, I guess the optimizer would do the same thing either way, but that's just a guess. I can't see your execution plans.
In general, simpler code is faster, and better in other ways, too. In this case
tableB
is simpler than
(SELECT field1, field2 FROM tableB)
Why do you want a sub-query in this example? -
How to rewrite this query without sub query please help me
Hello All Good Evening,
Could you please help me with this query, how can i write this query without sub query, or how can write this query another ways
please help me
select planno, status1, count(*) Counts from
select a.ValetNO PlanNo ,
case
when JoinCode in ('00', '01', '02') then 'Actcess'
when JoinCode in ('20', '21', '22', '23','38', '39') then
'Secured' else 'Other' end Status1 ---, COUNT (*)
from dbo.ppt a(NOLOCK) left join dbo.acts b on a.P_ID = b.P_ID and a.ValetNO = b.ValetNO
--group by a.ValetNO
a group by planno, status1
order by 2
Thank you in Advance
MilanWhats your objective here? Sorry, am not able to understand the reason for this change.
Try the below:(Not tested)
;With cte
As
select a.ValetNO PlanNo ,
case
when JoinCode in ('00', '01', '02') then 'Actcess'
when JoinCode in ('20', '21', '22', '23','38', '39') then
'Secured' else 'Other' end Status1 ---, COUNT (*)
from dbo.ppt a(NOLOCK) left join dbo.acts b on a.P_ID = b.P_ID and a.ValetNO = b.ValetNO
select planno, status1, count(*) Counts from cte
a group by planno, status1
order by 2
Even below:
select a.ValetNO PlanNo ,
case
when JoinCode in ('00', '01', '02') then 'Actcess'
when JoinCode in ('20', '21', '22', '23','38', '39') then
'Secured' else 'Other' end Status1 , COUNT (1)
from dbo.ppt a(NOLOCK) left join dbo.acts b on a.P_ID = b.P_ID and a.ValetNO = b.ValetNO
Group by a.ValetNO ,
case
when JoinCode in ('00', '01', '02') then 'Actcess'
when JoinCode in ('20', '21', '22', '23','38', '39') then
'Secured' else 'Other' end -
Help on Converting inerr query to sub query
Hi Guys,
This query is written in inner join, can any one try to write using sub query.
SELECT B.CNO
FROM CUSTEN A
INNER JOIN ORDS B
ON A.CNO = B.CNO
AND A.PRNO = B.PRNO
INNER JOIN ORDI C
ON B.ORDNO = C.ORDNO
INNER JOIN PRD D
ON C.PRNO = D.PRNO
WHERE B.STS = 'COM'
AND B.LMD >= A.LMD
GROUP BY B.CSTNO, C.PRNO
HAVING COUNT(B.ORDNO) > 1
Thanks in advance!
Regards,
LKRao
Edited by: kolipaka on Sep 18, 2012 6:37 PM
Edited by: kolipaka on Sep 18, 2012 6:38 PMHi,
kolipaka wrote:
Hi Guys,
This query is written in inner join, can any one try to write using sub query. Why?
We don't know your requirements, so we can't be sure if any solution we might think of meets your requirements.
... GROUP BY B.CSTNO, C.PRNOIf you really need to GROUP BY columns from different tables, then you almost certainly want to join those tables. You might be able to get the results you want with a scalar sub-query instead of a join, but that's needlessly complicated.
You said that what you posted is just a sub-query of some other query. Perhaps the solution involves making changes in that query, too. Post the complete query, CREATE TABLE and INSERT statments for a little sample data, the results you want from that data, and an explanation of how you get those results from that data. Say which columns are unique (expecially the columns used in the join conditions); that could be important. -
Detail differentiation between add query,combined query and sub query
HI
I would like to know the detail differentiation between add query,combined query and sub query with universe
correct me if I a wrong
Add query : adding of different query from different universe and also with in same universe.
Combined query : combining query using operators(Union,intersection,minus)with in same universe.
Sub query :getting results from the sub query and the result serves as the data for main query within same universe.Hi,
I would advise you to check the product documentation under http://help.sap.com/
regards
Steph -
Outter-Join with requirement for sub-query
I am working on a view that needs to return 1 record per payment date within the primary payment table.
Part of the information that is to be returned in this row comes from a date-controlled table containing superannuation information. This data may or may not be present, requiring an outer-join. The final problem is that there may be multiple rows in this superannuation table requiring me to retrieve the record with the most recent start date, prior to the payment date. This is where I'm breaking down currently as I cannot outer-join to a sub-query.
I had an idea that I could create an inline view of the superannuation table with 1 row for each of the last 365 days (The reports that will be built off the view are always run within 1-2 months of the payment date), with the date and either the required information or blanks if it did not exist. This would avoid me requiring an outer-join as I could just join on the payment date to the date in the inline query and return whatever data was there.
I'm pretty sure I should be able to do this with analytics rather than creating a date table, by restricting the rows to 365, then havign a column that is effectively the previous column - 1. Unfortunately I'm fairly new to analytics and find the Oracle documentation hard to decipher.
Can anyone help with this or perhaps suggest an alternate solution?please don't do that. that's the most pathetic way generate rows. all_objects is a very nasty view, and oracle reserves the right to merge the view into the rest of your query, making performance less than you had hoped for. how about this instead:
select ...
from (
select trunc(sysdate-rownum+1) super_date
from dual
connect by level < = 365 ) dates,
your_table_here
where dates.super_date = your_column (+)
... -
Help with doing SELECT sub query within the SET of an UPDATE statement
After doing some research, it appears as if it's possible to use a SELECT subquery in the SET of an UPDATE statement. i did find some examples and here is my code, however when I click the "check" button it's saying the field (my entire select subquery) is unknown and neither in one of the specified tables or defined by a "DATA". Do I have a syntax issue or is there another reason why it's not taking this as a valid statement? Thanks for the help!
LOOP AT IT_DATA
UPDATE /BIC/AZDP_O0140
SET /BIC/ZCOUNTER = (SELECT COUNT( DISTINCT MATERIAL )
FROM /BIC/AZDP_O0140
WHERE MATERIAL EQ IT_DATA-MATERIAL
GROUP BY MATERIAL).
ENDLOOP.my Update does indeed have a WHERE clause but because of the issue i'm having, all my criteria in my WHERE is black text in the ABAP editor. The editor doesn't even recognize the keywords "WHERE" or "EQ". Below is my entire statement which contains all WHERE criteria in both the Update and the Subquery, i've just removed it for testing to help simplify the query and eliminate as many other factors as posisble that may be causing problems:
LOOP AT IT_DATA.
UPDATE /BIC/AZDP_O0140
SET /BIC/ZCOUNTER = (SELECT COUNT( DISTINCT MATERIAL ) FROM /BIC/AZDP_O0140
WHERE WHSE_NUM EQ IT_DATA-WAREHOUSE
AND PLANT EQ IT_DATA-PLANT
AND /BIC/ZTRAN_NO EQ IT_DATA-TRANS_NUM
AND DELIV_NUMB EQ IT_DATA-DELIVERY
AND MATERIAL EQ IT_DATA-MATERIAL
GROUP BY MATERIAL)
WHERE WHSE_NUM EQ IT_DATA-WAREHOUSE
AND PLANT EQ IT_DATA-PLANT
AND /BIC/ZTRAN_NO EQ IT_DATA-TRANS_NUM
AND DELIV_NUMB EQ IT_DATA-DELIVERY
AND MATERIAL EQ IT_DATA-MATERIAL.
ENDLOOP.
i should also mention the sources i found were not within the SAP Library but instead on other third-party ABAP websites. so because i was having issues i wanted to post here to see if anyone else has come up with a working solution. but if this cannot be done i can likely come up with a solution for my needs using multiple internal tables, this would just have been much easier since i can get a query like this to do what i want in SQL Server. Thought i could utilize this in ABAP as well. -
Help with creating a sub-query
Hi,
I have a table, comprised of three columns: patient_id, observation, and pain_score
Pat_id, obs_num, pain_score
12345, 1, 4
12345, 2, 6
12345, 3, 8
98765, 1, 2
98765, 2, 4
98765, 3, 6
I need to see the percent change from observation 1 to observation 3 per patient. So basically I need to isolate the 4 and the 8 pain_score for patient 12345; and the 2 and 6 pain_score for patient 98765. All patients have 3 observation periods.
Thanks for the help.
Richtest@XE> set echo on
test@XE>
test@XE> @test3
test@XE> --
test@XE> with t as (
2 select 12345 as pat_id, 1 as obs_num, 4 as pain_score from dual union all
3 select 12345, 2, 6 from dual union all
4 select 12345, 3, 8 from dual union all
5 select 98765, 1, 2 from dual union all
6 select 98765, 2, 4 from dual union all
7 select 98765, 3, 6 from dual)
8 --
9 select pat_id,
10 obs_num,
11 pain_score,
12 lead(pain_score) over (partition by pat_id order by obs_num) as next_pain_score,
13 case obs_num
14 when 1 then (lead(pain_score) over (partition by pat_id order by obs_num) - pain_score)/pain_score*100||' %'
15 else null
16 end as pct_change
17 from t
18 where obs_num in (1, 3);
PAT_ID OBS_NUM PAIN_SCORE NEXT_PAIN_SCORE PCT_CHANGE
12345 1 4 8 100 %
12345 3 8
98765 1 2 6 200 %
98765 3 6
test@XE>
test@XE>
test@XE>isotope -
Decode with multiple column sub query
Dear's
What is the wrong with the query
select * from common_master
where
(company_code,lpad(rtrim(ltrim(bu_code)),12,' ')) IN
decode ('ADMIN','ADMIN',(select company_code ,lpad(rtrim(ltrim(bu_code)),12,' ') from common_master )
,(select company_code ,lpad(rtrim(ltrim(bu_code)),12,' ') from user_system_privs) )
The error message as
Error starting at line 16 in command:
select * from common_master
where
(company_code,lpad(rtrim(ltrim(bu_code)),12,' ')) IN
decode ('ADMIN','ADMIN',(select company_code ,lpad(rtrim(ltrim(bu_code)),12,' ') from common_master )
,(select company_code ,lpad(rtrim(ltrim(bu_code)),12,' ') from user_system_privs) )
Error at Command Line:18 Column:53
Error report:
SQL Error: ORA-00920: invalid relational operator
00920. 00000 - "invalid relational operator"
*Cause:
*Action:
DennisYou can club the columns in where clause and in decode
like
select * from common_master
where
(company_code || lpad(rtrim(ltrim(bu_code)) || to_char(12) ||' ') IN
( select decode ('ADMIN','ADMIN',company_code || lpad(rtrim(ltrim(bu_code)) || to_char(12) || ' ') from common_master ),
,company_code || lpad(rtrim(ltrim(bu_code)) || to_char(12) ||' ') from user_system_privs) )
HTH,
~Yogesh -
Select column in main query from sub query (derived table) -
Hi:
I have the following query - How do I select Tot_Atnd defined in the derived table
SELECT count(distinct c.prgm_id) AS "Total Completed", h.Tot_Atnd
FROM iplanrpt.vm_rpt_prgm c
INNER JOIN
*(SELECT PRGM_ID, SUM(CASE WHEN ATTENDED_IND = 'Y' THEN 1 ELSE 0 END) AS "Tot_Atnd" FROM iPlanrpt.VM_RPT_PRGM_ATND GROUP BY PRGM_ID) h*
ON c.PRGM_ID = h.PRGM_ID
ThanksHere's an example of what I think the CREATE TABLE and INSERT statements would look like for your data:
CREATE TABLE vm_rpt_prgm
( prgm_id NUMBER
INSERT INTO vm_rpt_prgm
VALUES (1);
INSERT INTO vm_rpt_prgm
VALUES (2);
INSERT INTO vm_rpt_prgm
VALUES (3);
INSERT INTO vm_rpt_prgm
VALUES (1);
INSERT INTO vm_rpt_prgm
VALUES (1);
INSERT INTO vm_rpt_prgm
VALUES (3);
CREATE TABLE vm_rpt_prgm_atnd
( prgm_id NUMBER
, attended_ind CHAR(1)
INSERT INTO vm_prt_prgm_atnd
VALUES (1, 'Y');
INSERT INTO vm_prt_prgm_atnd
VALUES (1, 'N');
INSERT INTO vm_prt_prgm_atnd
VALUES (2, 'Y');
INSERT INTO vm_prt_prgm_atnd
VALUES (2, 'Y');
INSERT INTO vm_prt_prgm_atnd
VALUES (2, 'N');
INSERT INTO vm_prt_prgm_atnd
VALUES (3, 'Y');
INSERT INTO vm_prt_prgm_atnd
VALUES (3, 'N');
INSERT INTO vm_prt_prgm_atnd
VALUES (3, 'N');But, I don't know your data. The sample data should be a simplified case of reality that represents (as best as possible) the real data set. For example, in vm_rpt_prgm, can the same prgm_id show up in multiple records? If not, the sample data I provided above is not representative of your data. Similar questions for vm_rpt_prgm_atnd: Can the same prgm_id show up in multiple records? Are the values of attended_ind 'Y' or 'N'? Can there be prgm_id's that exist in this table, but not the other? If not, again, my sample data is not representative of yours, so adjust it as needed and re-post it.
Here's some quick summary information on my sample data above:
There are 3 distinct values of prgm_id in vm_rpt_prgm.
There are 4 distinct values of prgm_id in vm_rpt_prgm_atnd.
There are 6 rows/records in vm_rpt_prgm.
There are 9 rows/records in vm_rpt_prgm_atnd.
The count of all 'Y's in vm_rpt_prgm_atnd is 5.
The count of all 'Y's in vm_rpt_prgm_atnd for only the prgm_id's in vm_rpt_prgm is 4.
So, which of these things (or other things) do you want to see in your result set?
You might say you want to see:
COUNT_OF_UNIQUE_PRGMS TOTAL_ATND_YS
3 4or...
PRGM_ID TOTAL_ATND_YS
1 1
2 2
3 1
4 1Once you clearly specify what you want, I can probably help you -
Filter query with sub query using Dropdown box
Dear Community,
I have 2 queries
1. Main Query with 2 fields: Project | Project value
2. Sub Query with 2 fields: Project group | Project
Project group can be belonging to number of projects and project can be belong to number of project group (Many to Many).
My customer wants the main query will open without any filtering.
When I choose project group from WAD dropdown box, the main query will filtering all the projects that belong to the project group.
I create WAD; define dropdown box as sub query, and Analysis as main query.
In the dropdown box I choose "data binding" char and create command "set selection state by binding" (project to project) but it doesnu2019t work.
I also try to do this by Replacement Path in the main query, but the variable requires the attribute will be ready for input.
Thanks a lot
YanivI am not sure about your comments on replacement path variable. Without having tried it, here is what I would have attempted:
The main query needs to use a replacement path variable for Project that is replaced by the results of the sub-query. Sub-query would have a regular input variable for project group. (as a quick test, if you had one analysis item for main query with variable input enabled, it should prompt you to enter Project group).
Now the drop-down needs to be associated with a javascript function. The javascript function needs to implement command "Set variable state" for the main query data provider to selected value of the drop-down.
The drop-down should be associated with the sub-query data provider, just used to populate the list of values in drop-down. -
Hi,
Can we use order by clause in Sub query?
While using the order by clause, I am getting the "missing expression error" . If I remove order by clause query executing fine.
Here is my query:
select *
from emp_mstr
where emp_no in(select
emp_no
from emp_mstr
order by branch_no);
Thanks & Regards,
MahiMay be you miss some required spaces also, other than wrong use of ORDER BY
select *
from emp_mstr
where emp_no in
( select e2.emp_no
from emp_mstr e2
-- order by e2.branch_no
);Why do you want to ORDER BY in the subquery, which you use with IN clause? That will not make any difference in the result..Means the result you get with ORDER BY will be same as without that.. And in this case, ORDER by is a unncessary overhead.. And Ordering is very costly..
And why do you want to have the IN clause at all in your query? You are referring the same tables in the main query and sub query..
The below will give the same result
select *
from emp_mstr
where emp_no is not nullIf you want to use another table in the subquery, always use aliasess...
select *
from emp_mstr
where emp_no in
( select e2.emp_no
from emp_mstr2 e2
-- order by e2.branch_no
); -
Difference between sub-query and corelated subquery
Hi,
can anyone please give me the clear difference between sub-query and coreleated subquery with an example.
I am very much confused with the both.
Also please let me know in which cases/situation these are used.
Thanks,Basically Sub Query is Query within Query. There are different type of SubQuery.
1. Scalar Sub Query
Query that is totally independent from the main query.
select empno, (select count(*) from emp) total_emp
from emphere the subquery is totally independent of the main query.
2. Corelated Sub Query
The sub query reffers to the main query.
select empno, (select deptname from dept d where e.deptno = d.deptno) deptname
from emp e3. Inline view
A sub query that is used as a table or view in a SQL
select *
from (select empno, deptname
from emp e, dept d
where e.deptno = d.deptno)
where sal > 100 -
Can someone please help me with a sub query question?
I need to list a 3rd party contract and then a list of students who belong to that contract.
On the students segment of the listing I need to show students with student id, name, total credit hours,
total amount spent on tuition, total amount spent on books and total amount spent on misc.
This code has a query for the contract information and I get that just fine.
Then it has a query that gives me total credit hours and that works fine
then it has a query that gives me total amount spent on tuition and that works fine
but
when I add the next query to get total amount spent on books I get only the information for the contract, I don't get student stuff anymore.
I would really appreciate any guidance that you could give.
Thanks in advance, Bob Hohulski
DECLARE
l_conn utl_TCP.connection;
v_filehandle utl_file.file_type;
v_output varchar2(1000);
v_contract_id varchar2(9);
v_contract_addr1 varchar2(30);
v_contract_addr2 varchar2(30);
v_contract_city varchar2(20);
v_contract_stat varchar2(03);
v_contract_zip varchar2(10);
v_contract_name varchar2(60);
v_student_id varchar2(09);
v_student_first_name varchar2(15);
v_student_mid_name varchar2(15);
v_student_last_name varchar2(60);
v_last_out varchar2(20);
v_student_detail_code varchar2(04);
v_student_amount number(12,2);
v_student_ref_number varchar2(09);
v_credit_hrs number(7,2);
v_tuition_amount number(12,2);
v_books_amount number(12,2);
v_misc_amount number(12,2);
v_total_for_student number(12,2);
v_current_student varchar2(09);
v_sftregs_pidm varchar2(09);
v_tbraccd_pidm varchar2(09);
CURSOR c_sel_contract IS
SELECT DISTINCT spriden_id, spriden_last_name,
spraddr_street_line1, spraddr_street_line2,
spraddr_city, spraddr_stat_code, spraddr_zip
FROM spriden, spraddr
-- WHERE spriden_id = '&Enter_Id'
where spriden_id = 'T10474666'
AND spriden_pidm = spraddr_pidm
AND SPRIDEN_CHANGE_IND IS NULL;
CURSOR c_sel_student IS
SELECT DISTINCT spriden_id, spriden_first_name, spriden_mi, spriden_last_name,
sftregs_credit_hr,
tbraccd_amount,
sftregs_pidm,
tbraccd_pidm
FROM spriden, tbraccd, tbbcstu, sftregs
WHERE 559220 = tbbcstu_contract_pidm
AND spriden_pidm = tbraccd_pidm
AND spriden_pidm = tbbcstu_stu_pidm
AND spriden_pidm = sftregs_pidm
AND (sftregs_pidm, sftregs_credit_hr) IN
(SELECT DISTINCT sftregs_pidm, SUM(sftregs_credit_hr)
FROM sftregs, tbbcstu, spriden
WHERE sftregs_term_code = '201010'
AND sftregs_pidm = tbbcstu_stu_pidm
AND sftregs_pidm = spriden_pidm
GROUP BY sftregs_pidm)
AND (tbraccd_pidm, tbraccd_amount) IN
(SELECT DISTINCT tbraccd_pidm, SUM(tbraccd_amount)
-- tuition
FROM tbraccd, tbbcstu, spriden
WHERE tbraccd_term_code = '201010'
AND (tbraccd_detail_code = 'TU01' OR
tbraccd_detail_code = 'TU02' OR
tbraccd_detail_code = 'TU03' OR
tbraccd_detail_code = 'TU04')
AND tbraccd_pidm = tbbcstu_stu_pidm
AND tbraccd_pidm = spriden_pidm
GROUP BY tbraccd_pidm)
--this code works up to this point
--when I add the next query I get nothing
AND (tbraccd_pidm, tbraccd_amount) IN
(SELECT tbraccd_pidm, SUM(tbraccd_amount)
books
FROM tbraccd, tbbcstu
WHERE tbraccd_term_code = '201010'
AND (tbraccd_detail_code = 'BKSU' OR
tbraccd_detail_code = 'BKCH')
AND tbraccd_pidm = tbbcstu_stu_pidm
GROUP BY tbraccd_pidm, tbraccd_amount)
--AND (tbraccd_pidm, tbraccd_amount) IN
-- (SELECT tbraccd_pidm, SUM(tbraccd_amount)
-- misc
-- FROM tbraccd, tbbcstu
-- WHERE tbraccd_term_code = '201010'
-- AND tbraccd_pidm = tbbcstu_stu_pidm
-- AND (tbraccd_detail_code = 'AUNA' OR
-- tbraccd_detail_code = 'OTPB')
-- GROUP BY tbraccd_pidm, tbraccd_amount)
--ORDER BY tbraccd_pidm, spriden_first_name, spriden_mi, spriden_last_name,
-- tbbcstu_sponsor_ref_number, sftregs_credit_hr;
ORDER BY tbraccd_pidm;
BEGIN
v_filehandle := utl_file.fopen(location => 'UTLFILE_MISAP9',
filename => 'ban_matrix.dat',
open_mode => 'w',
max_linesize => 32767);
OPEN c_sel_contract;
LOOP
DBMS_OUTPUT.PUT_LINE('looping');
FETCH c_sel_contract INTO v_contract_id, v_contract_name,
v_contract_addr1, v_contract_addr2,
v_contract_city, v_contract_stat,
v_contract_zip;
EXIT WHEN c_sel_contract%NOTFOUND;
v_output :=
nvl(rpad(v_contract_id,9),rpad(' ',9)) ||
' ' ||
nvl(rpad(v_contract_name,60),rpad(' ',60));
utl_file.put_line(v_filehandle,v_output);
v_output :=
nvl(rpad(v_contract_addr1, 30),rpad(' ',30)) ||
' ' ||
nvl(rpad(v_contract_addr2, 30),rpad(' ',30));
utl_file.put_line(v_filehandle,v_output);
v_output :=
nvl(rpad(v_contract_city, 20), rpad(' ',20)) ||
' ' ||
nvl(rpad(v_contract_stat, 3), rpad(' ',3)) ||
' ' ||
nvl(rpad(v_contract_zip, 10), rpad(' ',10));
utl_file.put_line(v_filehandle,v_output);
utl_file.new_line(v_filehandle);
OPEN c_sel_student;
LOOP
FETCH c_sel_student into v_student_id, v_student_first_name, v_student_mid_name,
v_student_last_name,
v_credit_hrs,
v_tuition_amount,
v_sftregs_pidm,
v_tbraccd_pidm;
-- v_books_amount, v_misc_amount;
EXIT WHEN c_sel_student%NOTFOUND;
v_last_out := substr(v_student_last_name, 1, 20);
v_output :=
nvl(rpad(v_student_id, 09),rpad(' ',09)) ||
' ' ||
nvl(rpad(v_student_first_name, 15),rpad(' ',15)) ||
nvl(rpad(v_student_mid_name, 15),rpad(' ',15)) ||
nvl(rpad(v_last_out, 20),rpad(' ',20)) ||
' ' ||
nvl(rpad(v_student_ref_number, 09),rpad(' ',09)) ||
' ' ||
v_credit_hrs ||
' ' ||
v_tuition_amount ||
-- v_books_amount ||
-- ' ' ||
-- v_misc_amount;
utl_file.put_line(v_filehandle,v_output);
END LOOP;
END LOOP;
--EXCEPTION
--WHEN OTHERS THEN
-- DECLARE
-- err_msg VARCHAR2(100);
-- BEGIN
-- err_msg := 'ERR- '||SUBSTR(SQLERRM, 1,100);
-- - utl_file.put_line(v_filehandle,err_msg);
--END;
utl_file.fclose(v_filehandle);
CLOSE c_sel_contract;
CLOSE c_sel_student;
--END AR_MATRIX_PROC;
END;run this original query
SELECT DISTINCT spriden_id,
spriden_first_name,
spriden_mi,
spriden_last_name,
sftregs_credit_hr,
tbraccd_amount,
sftregs_pidm,
tbraccd_pidm
FROM spriden, tbraccd, tbbcstu, sftregs
WHERE 559220 = tbbcstu_contract_pidm
AND spriden_pidm = tbraccd_pidm
AND spriden_pidm = tbbcstu_stu_pidm
AND spriden_pidm = sftregs_pidm
AND (sftregs_pidm, sftregs_credit_hr) IN (SELECT DISTINCT sftregs_pidm, SUM(sftregs_credit_hr)
FROM sftregs, tbbcstu, spriden
WHERE sftregs_term_code = '201010'
AND sftregs_pidm = tbbcstu_stu_pidm
AND sftregs_pidm = spriden_pidm
GROUP BY sftregs_pidm)
AND (tbraccd_pidm, tbraccd_amount) IN (SELECT DISTINCT tbraccd_pidm, SUM(tbraccd_amount)
-- tuition
FROM tbraccd, tbbcstu, spriden
WHERE tbraccd_term_code = '201010'
AND (tbraccd_detail_code = 'TU01' OR
tbraccd_detail_code = 'TU02' OR
tbraccd_detail_code = 'TU03' OR
tbraccd_detail_code = 'TU04')
AND tbraccd_pidm = tbbcstu_stu_pidm
AND tbraccd_pidm = spriden_pidm
GROUP BY tbraccd_pidm)
AND (tbraccd_pidm, tbraccd_amount) IN (SELECT tbraccd_pidm, SUM(tbraccd_amount) books
FROM tbraccd, tbbcstu
WHERE tbraccd_term_code = '201010'
AND (tbraccd_detail_code = 'BKSU' OR
tbraccd_detail_code = 'BKCH')
AND tbraccd_pidm = tbbcstu_stu_pidm
GROUP BY tbraccd_pidm, tbraccd_amount)
ORDER BY tbraccd_pidm;then run this sub-query:
SELECT tbraccd_pidm, SUM(tbraccd_amount) books
FROM tbraccd, tbbcstu
WHERE tbraccd_term_code = '201010'
AND (tbraccd_detail_code = 'BKSU' OR
tbraccd_detail_code = 'BKCH')
AND tbraccd_pidm = tbbcstu_stu_pidm
GROUP BY tbraccd_pidm, tbraccd_amount)see if you have a matching tbraccd_pidm and tbraccd_amount between the two results. -
Please help to re-write this query using exists or with
Hi please help to re-write this query using exists or with, i need to write same code for 45 day , 90 days and so on but sub query condition is same for all
SELECT SUM (DECODE (t_one_mon_c_paid_us, 0, 0, 1)) t_two_y_m_mul_ca_
FROM (SELECT SUM (one_mon_c_paid_us) t_one_mon_c_paid_us
FROM (
SELECT a.individual_id individual_id,
CASE
WHEN NVL
(b.ship_dt,
TO_DATE ('05-MAY-1955')
) >= SYSDATE - 45
AND a.country_cd = 'US'
AND b.individual_id in (
SELECT UNIQUE c.individual_id
FROM order c
WHERE c.prod_cd = 'A'
AND NVL (c.last_payment_dt,
TO_DATE ('05-MAY-1955')
) >= SYSDATE - 745)
THEN 1
ELSE 0
END AS one_mon_c_paid_us
FROM items b, addr a, product d
WHERE b.prod_id = d.prod_id
AND d.affinity_1_cd = 'ADH'
AND b.individual_id = a.individual_id)
GROUP BY individual_id)
Edited by: user4522368 on Aug 23, 2010 9:11 AMPlease try and place \ before and after you code \Could you not remove the inline column select with the following?
SELECT a.individual_id individual_id
,CASE
when b.Ship_dt is null then
3
WHEN b.ship_dt >= SYSDATE - 90
3
WHEN b.ship_dt >= SYSDATE - 45
2
WHEN b.ship_dt >= SYSDATE - 30
1
END AS one_mon_c_paid_us
FROM items b
,addr a
,product d
,order o
WHERE b.prod_id = d.prod_id
AND d.affinity_1_cd = 'ADH'
AND b.individual_id = a.individual_id
AND b.Individual_ID = o.Individual_ID
and o.Prod_CD = 'A'
and NVL (o.last_payment_dt,TO_DATE ('05-MAY-1955') ) >= SYSDATE - 745
and a.Country_CD = 'US' -
Joining with sub query not working
Hi
I am new with these complex queries. I am trying to join a sub query to a query as below;
SELECT Events1.InvoiceBatch AS BatchNo, Events1.InvoiceBatchDate AS BatchDate, tblClients.Company, tblClients.ID AS ClientID, COUNT(Events1.ID) AS Invoices,
COUNT(*) - COUNT(Events1.InvoicePrintDate) AS E, Events1.InvoiceBatchFromDate AS BatchFrom, Events1.InvoiceBatchToDate AS BatchTo, (SELECT EventID, SUM(Total) FROM tblStaffBookings AS StaffBookings WHERE StaffBookings.EventID = Events1.ID GROUP BY EventID) AS Total
FROM tblEvents AS Events1 LEFT OUTER JOIN
tblClients ON Events1.ClientID = tblClients.ID
WHERE (Events1.FactoringExportDate IS NULL) OR (Events1.AccountsExportDate IS NULL) OR (Events1.InvoiceSentDate IS NULL)
GROUP BY Events1.InvoiceBatch, Events1.InvoiceBatchDate, tblClients.Company, tblClients.ID, Events1.InvoiceBatchFromDate, Events1.InvoiceBatchToDate
HAVING (Events1.InvoiceBatch = 5212)
ORDER BY tblClients.Company
I am getting these two errors;
Msg 8120, Level 16, State 1, Line 2
Column 'tblEvents.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Msg 116, Level 16, State 1, Line 2
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
What am I missing?
Thanks
RegardsSELECT Events1.InvoiceBatch AS BatchNo, Events1.InvoiceBatchDate AS BatchDate, tblClients.Company, tblClients.ID AS ClientID, COUNT(Events1.ID) AS Invoices,
COUNT(*) - COUNT(Events1.InvoicePrintDate) AS E, Events1.InvoiceBatchFromDate AS BatchFrom, Events1.InvoiceBatchToDate AS BatchTo,Total
FROM tblEvents AS Events1 LEFT OUTER JOIN
tblClients ON Events1.ClientID = tblClients.ID
LEFT OUTER JOIN (SELECT EventID, SUM(Total) AS Total FROM tblStaffBookings AS StaffBookings WHERE StaffBookings.EventID = Events1.ID GROUP BY EventID) sb
ON sb.EventID = Events1.ID
WHERE (Events1.FactoringExportDate IS NULL) OR (Events1.AccountsExportDate IS NULL) OR (Events1.InvoiceSentDate IS NULL)
GROUP BY Events1.InvoiceBatch, Events1.InvoiceBatchDate, tblClients.Company, tblClients.ID, Events1.InvoiceBatchFromDate, Events1.InvoiceBatchToDate,Total
HAVING (Events1.InvoiceBatch = 5212)
ORDER BY tblClients.Company
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
Visakh
My Wiki User Page
My MSDN Page
My Personal Blog
My Facebook Page
Says;
Msg 4104, Level 16, State 1, Line 5
The multi-part identifier "Events1.ID" could not be bound.
on
LEFT OUTER JOIN (SELECT EventID, SUM(Total) AS Total FROM tblStaffBookings AS StaffBookings WHERE StaffBookings.EventID = Events1.ID GROUP BY EventID) sb
Regards
Maybe you are looking for
-
I recently set up a new Windows 7 PC. I backed my phone to the icloud. When I plugged my phone into itunes on the PC it wiped my contacts and music out. Now I'm finding I have multiple iCloud accounts. I don't know which one to use or how to get my d
-
I CAN'T GET MY BRUSH IN PHOTOSHOP ELEMENTS EDITOR TO CHANGE FROM A PLUS SIGN WITH A CIRCLE IN THE MIDDLE. I WANT TO USE A ROUND BRUSH.
-
Hi all, I got the Csv parser from the net.It is giving runtime error "IO FILE Exception" actually there are 3 file included in it. CSVFile import java.util.ArrayList; import java.io.BufferedReader; import java.io.FileReader; * holds the file object o
-
Invoice load using main vendor and alternate payeeu0085Issues ????
Hello all, I have a question regarding alternate payee in the vendor master. We have a vendor A which has an alternate payee in it B . So when we load an invoice with vendor A and run payment run it picks up vendor B as recipient. But when we load a
-
Parallel processing for concurrent program
Hi Team, Can any one give the suggestions for parallelism of concurrent program. As i am having union's in the select statment . i am not able to use NTILE eventhough i am giving number of threads as 50000 even though it is running for a long time. B