ORA-00904 coming because of  table JOIN

I have this query which works fine, how everwhen I attempt to join the pubsched table based on schedules.areaid = pubsched.areaid it comes up with ORA-00904
telling me that the area id is invalid.
Try commenting out line 8 of the query which joins the pubsched table and it will work fine.
Line 8 uncommented blows it up.
pubsched is used to determine if a schedule is published or not. Joining pubsched is being done to eliminate non published schedules from the query results.
Just for clarification, need help making the join work.
Any help is much appreciated.
Thanks,
George
SELECT
empid,
areaid,
startpp + day_number - 1 AS startdate,NULL AS starttime,NULL AS endtime,
8 AS hours,
0 AS minutes FROM schedules s
JOIN payperiods pp ON pp.periodid = s.periodid
JOIN pubsched ps on ps.periodid = s.periodid and ps.areaid=s.areaid
UNPIVOT ( v
    FOR day_number IN (day1 AS 1,
                       day2 AS 2,
                       day3 AS 3,
                       day4 AS 4,
                       day5 AS 5,
                       day6 AS 6,
                       day7 AS 7,
                       day8 AS 8,
                       day9 AS 9,
                       day10 AS 10,
                       day11 AS 11,
                       day12 AS 12,
                       day13 AS 13,
                       day14 AS 14
WHERE UPPER(SUBSTR (v, 1, 4)) = 'SHFT';
select * from pubsched where areaid=2003 and periodid='092013';
CREATE TABLE SCHEDULES
SCHEDULEID NUMBER(12) NOT NULL,
EMPID NUMBER(12) NOT NULL,
PERIODID VARCHAR2(6 BYTE) NOT NULL,
AREAID NUMBER(12) NOT NULL,
DAY1 VARCHAR2(50 BYTE),
DAY2 VARCHAR2(50 BYTE),
DAY3 VARCHAR2(50 BYTE),
DAY4 VARCHAR2(50 BYTE),
DAY5 VARCHAR2(50 BYTE),
DAY6 VARCHAR2(50 BYTE),
DAY7 VARCHAR2(50 BYTE),
DAY8 VARCHAR2(50 BYTE),
DAY9 VARCHAR2(50 BYTE),
DAY10 VARCHAR2(50 BYTE),
DAY11 VARCHAR2(50 BYTE),
DAY12 VARCHAR2(50 BYTE),
DAY13 VARCHAR2(50 BYTE),
DAY14 VARCHAR2(50 BYTE),
NOPTIND1 INTEGER DEFAULT 0,
NOPTIND2 INTEGER DEFAULT 0,
NOPTIND3 INTEGER DEFAULT 0,
NOPTIND4 INTEGER DEFAULT 0,
NOPTIND5 INTEGER DEFAULT 0,
NOPTIND6 INTEGER DEFAULT 0,
NOPTIND7 INTEGER DEFAULT 0,
NOPTIND8 INTEGER DEFAULT 0,
NOPTIND9 INTEGER DEFAULT 0,
NOPTIND10 INTEGER DEFAULT 0,
NOPTIND11 INTEGER DEFAULT 0,
NOPTIND12 INTEGER DEFAULT 0,
NOPTIND13 INTEGER DEFAULT 0,
NOPTIND14 INTEGER DEFAULT 0
CREATE TABLE PAYPERIODS
PERIODID VARCHAR2(6 BYTE) NOT NULL,
STARTPP DATE,
ENDPP DATE
CREATE TABLE PUBSCHED
  PUBSCHEDID   NUMBER(12)                       NOT NULL,
  PERIODID     VARCHAR2(6 BYTE)                 NOT NULL,
  PUPDATE      DATE,
  PUBTHRU      DATE,
  AREAID       NUMBER(12)                       NOT NULL,
  PUBLISHEDBY  NUMBER(12)
Insert into SCHEDULES
(SCHEDULEID, EMPID, PERIODID, AREAID, DAY1,
DAY2, DAY3, DAY4, DAY5, DAY6,
DAY7, DAY8, DAY9, DAY10, DAY11,
DAY12, DAY13, DAY14, NOPTIND1, NOPTIND2,
NOPTIND3, NOPTIND4, NOPTIND5, NOPTIND6, NOPTIND7,
NOPTIND8, NOPTIND9, NOPTIND10, NOPTIND11, NOPTIND12,
NOPTIND13, NOPTIND14)
Values
(3693744, 753738, '092013', 2003, 'X',
'SHFT<1530>', 'SHFT<1530>', '1530', '1530', '1530',
'X', 'X', '1530', '1530', 'SHFT',
'1530', '1530', 'X', 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0);
Insert into SCHEDULES
(SCHEDULEID, EMPID, PERIODID, AREAID, DAY1,
DAY2, DAY3, DAY4, DAY5, DAY6,
DAY7, DAY8, DAY9, DAY10, DAY11,
DAY12, DAY13, DAY14, NOPTIND1, NOPTIND2,
NOPTIND3, NOPTIND4, NOPTIND5, NOPTIND6, NOPTIND7,
NOPTIND8, NOPTIND9, NOPTIND10, NOPTIND11, NOPTIND12,
NOPTIND13, NOPTIND14)
Values
(3693745, 753740, '092013', 2003, 'X',
'SHFT<1530>', 'SHFT<1530>', '1530', 'SHFT', '1530',
'X', 'X', '1530', '1530', '1530',
'1530', '1530', 'X', 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0);
Insert into SCHEDULES
(SCHEDULEID, EMPID, PERIODID, AREAID, DAY1,
DAY2, DAY3, DAY4, DAY5, DAY6,
DAY7, DAY8, DAY9, DAY10, DAY11,
DAY12, DAY13, DAY14, NOPTIND1, NOPTIND2,
NOPTIND3, NOPTIND4, NOPTIND5, NOPTIND6, NOPTIND7,
NOPTIND8, NOPTIND9, NOPTIND10, NOPTIND11, NOPTIND12,
NOPTIND13, NOPTIND14)
Values
(3693746, 753748, '082013', 2003, 'X',
'SHFT<1530>', '1530', '1530', '1530', '1530',
'X', 'X', 'SHFT<1530>', '1530', 'SHFT',
'1530', '1530', 'X', 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0);
COMMIT;
Insert into PAYPERIODS
(PERIODID, STARTPP)
Values
('092013', TO_DATE('04/7/2013 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;
Insert into WMTSCHEDULER.PUBSCHED
   (PUBSCHEDID, PERIODID, PUPDATE, PUBTHRU, AREAID,
    PUBLISHEDBY)
Values
   (51372, '092013', TO_DATE('03/07/2013 11:59:17', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('04/20/2013 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 2003,
    752910);
COMMIT;
Expected Output
EMPID,AREAID,STARTDATE,STARTTIME,ENDTIME,HOURS,MINUTES
753738,2003,4/18/2013,,,8,0
753738,2003,4/9/2013,,,8,0
753738,2003,4/8/2013,,,8,0
753740,2003,4/11/2013,,,8,0
753740,2003,4/9/2013,,,8,0
753740,2003,4/8/2013,,,8,0Edited by: George H on Apr 18, 2013 8:41 AM
Edited by: George H on Apr 18, 2013 9:09 AM
Edited by: George H on Apr 18, 2013 9:10 AM
Edited by: George H on Apr 18, 2013 9:20 AM
Edited by: George H on Apr 18, 2013 9:42 AM
Edited by: George H on Apr 18, 2013 11:25 AM

Hi, George,
George H wrote:
I have this query which works fine, how everwhen I attempt to join the pubsched table based on schedules.areaid = pubsched.areaid it comes up with ORA-00904
telling me that the area id is invalid.
Try commenting out line 8 of the query which joins the pubsched table and it will work fine.If I comment out the line
JOIN pubsched ps on ps.periodid = s.periodid and ps.areaid=s.areaid then I don;'t get the error; I get "no rows selected". That's not what you want, is it?
Are you sure the sample data is correct? What are the results you want from the sample data?
SELECT
empid,
areaid,
startpp + day_number - 1 AS startdate,NULL AS starttime,NULL AS endtime,
8 AS hours,
0 AS minutes FROM schedules s
JOIN payperiods pp ON pp.periodid = s.periodid
JOIN pubsched ps on ps.periodid = s.periodid and ps.areaid=s.areaid
UNPIVOT ( v
FOR day_number IN (day1 AS 1,
day2 AS 2,
day3 AS 3,
...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.
Thanks for posting the CREATE TABLE and INSERT statements, and your query; that's very helpful.
Don't forget to post the desired results given that sample data.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

Similar Messages

  • ORA-00604 ORA-00904 When query partitioned table with partitioned indexes

    Got ORA-00604 ORA-00904 When query partitioned table with partitioned indexes in the data warehouse environment.
    Query runs fine when query the partitioned table without partitioned indexes.
    Here is the query.
    SELECT al2.vdc_name, al7.model_series_name, COUNT (DISTINCT (al1.vin)),
    al27.accessory_code
    FROM vlc.veh_vdc_accessorization_fact al1,
    vlc.vdc_dim al2,
    vlc.model_attribute_dim al7,
    vlc.ppo_list_dim al18,
    vlc.ppo_list_indiv_type_dim al23,
    vlc.accy_type_dim al27
    WHERE ( al2.vdc_id = al1.vdc_location_id
    AND al7.model_attribute_id = al1.model_attribute_id
    AND al18.mydppolist_id = al1.ppo_list_id
    AND al23.mydppolist_id = al18.mydppolist_id
    AND al23.mydaccytyp_id = al27.mydaccytyp_id
    AND ( al7.model_series_name IN ('SCION TC', 'SCION XA', 'SCION XB')
    AND al2.vdc_name IN
    ('PORT OF BALTIMORE',
    'PORT OF JACKSONVILLE - LEXUS',
    'PORT OF LONG BEACH',
    'PORT OF NEWARK',
    'PORT OF PORTLAND'
    AND al27.accessory_code IN ('42', '43', '44', '45')
    GROUP BY al2.vdc_name, al7.model_series_name, al27.accessory_code

    I would recommend that you post this at the following OTN forum:
    Database - General
    General Database Discussions
    and perhaps at:
    Oracle Warehouse Builder
    Warehouse Builder
    The Oracle OLAP forum typically does not cover general data warehousing topics.

  • ORA-00904 error while export table with CLOB

    All,
    I'm trying to export from Oracle Client 8.0.4 an specific Oracle 9i R2 schema, but this error appears. This error is related with tables that have CLOB field types, because schemas with tables without this field type can be exported with no error. I've already run the catexp.sql script, but it haven't solved this problem.
    Does anyone can help me?
    Thanks,
    Davi

    You can try performing the import of the dump to see if it would work with 8i client or the 8.0.4 client.
    if not, you may not be able to use this method to move data into 8.0.4 database that is no longer spported by current tools.
    you may then want to try use other techniques like dumping tables into flat files and then using SQL*Loader to load into 8.0.4.
    http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:88212348059#14506966201668

  • Oracle query on dblinked SQL Server tables returns ORA-00904 error

    Hi,
    I have created a dblink to a SQL Server database from Oracle using Generic Connectivity.
    The following query returns ORA-00904 Invalid Identifier error in the WHERE clause (tblEmp.Empno)
    SELECT "EmpNo","EmpName", "DeptName"
    FROM tblEmp@sqlserver,
    tblDept@sqlserver
    WHERE tblDept.DeptNo = tblEmp.Empno
    I had to enclose the column names in double quotes due to case sensitivitiy of the columns, but I can't do the
    same for the WHERE clause.
    1) So, how do I fix this error ?
    2) Also how do I include Deptno column with table alias in the columns list?
    (Deptno is ambiguous in Emp and Dept tables)
    Regards,
    Sam

    Alex
    Because using the aliases all the time can become annoying and lead to disparate standards when used by multiple developers. For a one-off query I would go with aliases in the query but if the linked tables are going to be interrogated extensively I would prefer to create vanilla views of the underlying tables so that the aliases aren't necessary.
    Just my opinion, it feels a bit cleaner to do it this way - you only do the work once in creating the view and then you don't need to worry about the case sensitivity of the linked database. You can also refer to the source in the name of the view so you don't have to think about different source databases with the same table names.
    Cheers
    Ben

  • Ora-00904 left outer join

    Hi,
    I am trying to create a materialized view and trying replace + left outer join with 'left outer join' clause. I am getting
    ERROR at line 68:
    ORA-00904: "RF"."DATA_TYPE_ID": invalid identifier
    Here is the sql I am using. Any help is appreciated.
    CREATE MATERIALIZED VIEW HHC_CUSTOM.HHC_RESULT_FIELD_DIMENSION0925 (DATA_ELEMENT_ID,FIELD,PROFILE,PROFILE_ID,PARENT_FIELD,PARENT_PROFILE,PARENT_PROFILE_ID,DATA_TYPE,DECODE_TYPE,CFG_GROUP,CFG_SET,ACTIVITY_COUNT)
    TABLESPACE CUSTOM_01
    PCTUSED 0
    PCTFREE 10
    INITRANS 2
    MAXTRANS 255
    STORAGE (
    INITIAL 80K
    NEXT 1M
    MINEXTENTS 1
    MAXEXTENTS UNLIMITED
    PCTINCREASE 0
    BUFFER_POOL DEFAULT
    FLASH_CACHE DEFAULT
    CELL_FLASH_CACHE DEFAULT
    NOCACHE
    ENABLE ROW MOVEMENT
    NOLOGGING
    NOCOMPRESS
    NOPARALLEL
    BUILD IMMEDIATE
    REFRESH COMPLETE on DEMand
    WITH PRIMARY KEY
    AS
    /* Formatted on 9/25/2012 11:53:36 AM (QP5 v5.215.12089.38647) */
    SELECT /*+ ALL_ROWS FULL(rf) FULL(dt) FULL(dc) FULL(rd) FULL(mc) FULL(ad) FULL(ag) USE_HASH(rf,dt,dc,rd,mc,ad,ag) INDEX(prf,KP_RESULT_FIELD) INDEX(prd,KP_RESULT_PROFILE) INDEX(pmc,KP_RESULT_MULTI_FIELD_PROFILE) INDEX(pad,KP_ASSESS_PROFILE) INDEX(pag,KP_ASSESS_MULTI_FIELD_PROFILE) USE_NL(prf,prd,pmc,pad,pag) ORDERED(rf,dt,dc,rd,mc,ad,ag,prf,prd,pmc,pad,pag) */
    rf.data_element_id AS data_element_id,
    rf.name AS field,
    DECODE (SUBSTR (rf.data_element_id, 1, 3),
    'RD/', rd.name,
    'AG/', ag.name,
    'AD/', ad.name,
    'MC/', mc.name)
    AS profile,
    DECODE (SUBSTR (rf.data_element_id, 1, 3),
    'RD/', rd.profile_id,
    'AG/', ag.profile_id,
    'AD/', ad.profile_id,
    'MC/', mc.profile_id)
    AS profile_id,
    prf.name AS parent_field,
    DECODE (SUBSTR (rf.parent_profile_field_id, 1, 3),
    NULL, NULL,
    'RD/', prd.name,
    'AD/', pad.name,
    'AG/', pag.NAME, --shouldn't happen
    'MC/', pmc.name --shouldn't happen
    AS parent_profile,
    DECODE (SUBSTR (rf.parent_profile_field_id, 1, 3),
    NULL, NULL,
    'RD/', prd.profile_id,
    'AD/', pad.profile_id,
    'AG/', pag.profile_id, --shouldn't happen
    'MC/', pmc.profile_id --shouldn't happen
    AS parent_profile_id,
    dt.name AS data_type,
    NVL (dc.name,
    DECODE (UPPER (dt.name), 'ORGANISM', 'Organism', 'Not Coded'))
    AS decode_type,
    NVL (cfg.cfg_group, 'UNDEFINED') AS cfg_group,
    NVL (cfg.cfg_set, 'UNDEFINED') AS cfg_set,
    DECODE (rslt.data_element_id, NULL, 0, rslt.activity_count)
    AS activity_count
    FROM ud_master.result_field rf,ud_master.result_field prf
    join ud_master.data_type dt on (rf.data_type_id=dt.data_type_id)
    left outer join ud_master.decode_type dc on (rf.decode_source_id = dc.decode_source_id)
    left outer join ud_master.result_profile rd on (rf.profile_id = rd.profile_id)
    left outer join ud_master.result_multi_field_profile mc on (rf.profile_id = mc.profile_id)
    left outer join ud_master.assess_profile ad on (rf.profile_id = ad.profile_id)
    left outer join ud_master.assess_multi_field_profile ag on (rf.profile_id = ag.profile_id)
    left outer join ud_master.result_field rf on (prf.parent_profile_field_id = rf.data_element_id)
    left outer join ud_master.result_profile prd on (prf.profile_id = prd.profile_id)
    left outer join ud_master.result_multi_field_profile pmc on (prf.profile_id = pmc.profile_id)
    left outer join ud_master.assess_profile pad on (prf.profile_id = pad.profile_id)
    left outer join ud_master.assess_multi_field_profile pag on (rf.profile_id = pag.profile_id)
    left outer join (SELECT * FROM hhc_custom.dw_cfg_v WHERE cfg_type_id = 1) cfg on (rf.data_element_id = cfg.cfg_value)
    left outer join (SELECT data_element_id, COUNT (*) AS activity_count FROM ud_master.result GROUP BY data_element_id) rslt on (rf.data_element_id = rslt.data_element_id);
    Regards,
    Kotesh

    Hi Monica,
    I need to have 2 aliases for ud_master.result_field table
    So I f I change it like this
    CREATE MATERIALIZED VIEW HHC_CUSTOM.HHC_RESULT_FIELD_DIMENSION0925 (DATA_ELEMENT_ID,FIELD,PROFILE,PROFILE_ID,PARENT_FIELD,PARENT_PROFILE,PARENT_PROFILE_ID,DATA_TYPE,DECODE_TYPE,CFG_GROUP,CFG_SET,ACTIVITY_COUNT)
    TABLESPACE CUSTOM_01
    PCTUSED 0
    PCTFREE 10
    INITRANS 2
    MAXTRANS 255
    STORAGE (
    INITIAL 80K
    NEXT 1M
    MINEXTENTS 1
    MAXEXTENTS UNLIMITED
    PCTINCREASE 0
    BUFFER_POOL DEFAULT
    FLASH_CACHE DEFAULT
    CELL_FLASH_CACHE DEFAULT
    NOCACHE
    ENABLE ROW MOVEMENT
    NOLOGGING
    NOCOMPRESS
    NOPARALLEL
    BUILD IMMEDIATE
    REFRESH COMPLETE on DEMand
    WITH PRIMARY KEY
    AS
    /* Formatted on 9/25/2012 11:53:36 AM (QP5 v5.215.12089.38647) */
    SELECT /*+ ALL_ROWS FULL(rf) FULL(dt) FULL(dc) FULL(rd) FULL(mc) FULL(ad) FULL(ag) USE_HASH(rf,dt,dc,rd,mc,ad,ag) INDEX(prf,KP_RESULT_FIELD) INDEX(prd,KP_RESULT_PROFILE) INDEX(pmc,KP_RESULT_MULTI_FIELD_PROFILE) INDEX(pad,KP_ASSESS_PROFILE) INDEX(pag,KP_ASSESS_MULTI_FIELD_PROFILE) USE_NL(prf,prd,pmc,pad,pag) ORDERED(rf,dt,dc,rd,mc,ad,ag,prf,prd,pmc,pad,pag) */
    rf.data_element_id AS data_element_id,
    rf.name AS field,
    DECODE (SUBSTR (rf.data_element_id, 1, 3),
    'RD/', rd.name,
    'AG/', ag.name,
    'AD/', ad.name,
    'MC/', mc.name)
    AS profile,
    DECODE (SUBSTR (rf.data_element_id, 1, 3),
    'RD/', rd.profile_id,
    'AG/', ag.profile_id,
    'AD/', ad.profile_id,
    'MC/', mc.profile_id)
    AS profile_id,
    prf.name AS parent_field,
    DECODE (SUBSTR (rf.parent_profile_field_id, 1, 3),
    NULL, NULL,
    'RD/', prd.name,
    'AD/', pad.name,
    'AG/', pag.NAME, --shouldn't happen
    'MC/', pmc.name --shouldn't happen
    AS parent_profile,
    DECODE (SUBSTR (rf.parent_profile_field_id, 1, 3),
    NULL, NULL,
    'RD/', prd.profile_id,
    'AD/', pad.profile_id,
    'AG/', pag.profile_id, --shouldn't happen
    'MC/', pmc.profile_id --shouldn't happen
    AS parent_profile_id,
    dt.name AS data_type,
    NVL (dc.name,
    DECODE (UPPER (dt.name), 'ORGANISM', 'Organism', 'Not Coded'))
    AS decode_type,
    NVL (cfg.cfg_group, 'UNDEFINED') AS cfg_group,
    NVL (cfg.cfg_set, 'UNDEFINED') AS cfg_set,
    DECODE (rslt.data_element_id, NULL, 0, rslt.activity_count)
    AS activity_count
    FROM ud_master.result_field rf,ud_master.result_field prf
    join ud_master.data_type dt on (prf.data_type_id=dt.data_type_id)
    left outer join ud_master.decode_type dc on (prf.decode_source_id = dc.decode_source_id)
    left outer join ud_master.result_profile rd on (prf.profile_id = rd.profile_id)
    left outer join ud_master.result_multi_field_profile mc on (prf.profile_id = mc.profile_id)
    left outer join ud_master.assess_profile ad on (prf.profile_id = ad.profile_id)
    left outer join ud_master.assess_multi_field_profile ag on (prf.profile_id = ag.profile_id)
    left outer join ud_master.result_field rf on (prf.parent_profile_field_id = rf.data_element_id)
    left outer join ud_master.result_profile prd on (prf.profile_id = prd.profile_id)
    left outer join ud_master.result_multi_field_profile pmc on (prf.profile_id = pmc.profile_id)
    left outer join ud_master.assess_profile pad on (prf.profile_id = pad.profile_id)
    left outer join ud_master.assess_multi_field_profile pag on (rf.profile_id = pag.profile_id)
    left outer join (SELECT * FROM hhc_custom.dw_cfg_v WHERE cfg_type_id = 1) cfg on (rf.data_element_id = cfg.cfg_value)
    left outer join (SELECT data_element_id, COUNT (*) AS activity_count FROM ud_master.result GROUP BY data_element_id) rslt on (rf.data_element_id = rslt.data_element_id);
    I am getting the following error
    DECODE (SUBSTR (rf.parent_profile_field_id, 1, 3),
    ERROR at line 51:
    ORA-00918: column ambiguously defined
    Following is the original query I tried to modify
    CREATE MATERIALIZED VIEW HHC_CUSTOM.HHC_RESULT_FIELD_DIMENSION (DATA_ELEMENT_ID,FIELD,PROFILE,PROFILE_ID,PARENT_FIELD,PARENT_PROFILE,PARENT_PROFILE_ID,DATA_TYPE,DECODE_TYPE,CFG_GROUP,CFG_SET,ACTIVITY_COUNT)
    TABLESPACE CUSTOM_01
    PCTUSED 0
    PCTFREE 10
    INITRANS 2
    MAXTRANS 255
    STORAGE (
    INITIAL 80K
    NEXT 1M
    MINEXTENTS 1
    MAXEXTENTS UNLIMITED
    PCTINCREASE 0
    BUFFER_POOL DEFAULT
    FLASH_CACHE DEFAULT
    CELL_FLASH_CACHE DEFAULT
    NOCACHE
    ENABLE ROW MOVEMENT
    NOLOGGING
    NOCOMPRESS
    NOPARALLEL
    BUILD IMMEDIATE
    REFRESH COMPLETE ON DEMAND
    WITH PRIMARY KEY
    AS
    /* Formatted on 9/26/2012 1:59:27 PM (QP5 v5.215.12089.38647) */
    SELECT /*+ ALL_ROWS FULL(rf) FULL(dt) FULL(dc) FULL(rd) FULL(mc) FULL(ad) FULL(ag) USE_HASH(rf,dt,dc,rd,mc,ad,ag) INDEX(prf,KP_RESULT_FIELD) INDEX(prd,KP_RESULT_PROFILE) INDEX(pmc,KP_RESULT_MULTI_FIELD_PROFILE) INDEX(pad,KP_ASSESS_PROFILE) INDEX(pag,KP_ASSESS_MULTI_FIELD_PROFILE) USE_NL(prf,prd,pmc,pad,pag) ORDERED(rf,dt,dc,rd,mc,ad,ag,prf,prd,pmc,pad,pag) */
    rf.data_element_id AS data_element_id,
    rf.name AS field,
    DECODE (SUBSTR (rf.data_element_id, 1, 3),
    'RD/', rd.name,
    'AG/', ag.name,
    'AD/', ad.name,
    'MC/', mc.name)
    AS profile,
    DECODE (SUBSTR (rf.data_element_id, 1, 3),
    'RD/', rd.profile_id,
    'AG/', ag.profile_id,
    'AD/', ad.profile_id,
    'MC/', mc.profile_id)
    AS profile_id,
    prf.name AS parent_field,
    DECODE (SUBSTR (rf.parent_profile_field_id, 1, 3),
    NULL, NULL,
    'RD/', prd.name,
    'AD/', pad.name,
    'AG/', pag.NAME, --shouldn't happen
    'MC/', pmc.name --shouldn't happen
    AS parent_profile,
    DECODE (SUBSTR (rf.parent_profile_field_id, 1, 3),
    NULL, NULL,
    'RD/', prd.profile_id,
    'AD/', pad.profile_id,
    'AG/', pag.profile_id, --shouldn't happen
    'MC/', pmc.profile_id --shouldn't happen
    AS parent_profile_id,
    dt.name AS data_type,
    NVL (dc.name,
    DECODE (UPPER (dt.name), 'ORGANISM', 'Organism', 'Not Coded'))
    AS decode_type,
    NVL (cfg.cfg_group, 'UNDEFINED') AS cfg_group,
    NVL (cfg.cfg_set, 'UNDEFINED') AS cfg_set,
    DECODE (rslt.data_element_id, NULL, 0, rslt.activity_count)
    AS activity_count
    FROM ud_master.result_field rf,
    ud_master.data_type dt,
    ud_master.decode_type dc,
    ud_master.result_profile rd,
    ud_master.result_multi_field_profile mc,
    ud_master.assess_profile ad,
    ud_master.assess_multi_field_profile ag,
    ud_master.result_field prf,
    ud_master.result_profile prd,
    ud_master.result_multi_field_profile pmc,
    ud_master.assess_profile pad,
    ud_master.assess_multi_field_profile pag,
    (SELECT *
    FROM hhc_custom.dw_cfg_v
    WHERE cfg_type_id = 1) cfg,
    ( SELECT data_element_id, COUNT (*) AS activity_count
    FROM ud_master.result
    GROUP BY data_element_id) rslt
    WHERE rf.data_type_id = dt.data_type_id
    AND rf.decode_source_id = dc.decode_source_id(+)
    AND rf.profile_id = rd.profile_id(+)
    AND rf.profile_id = mc.profile_id(+)
    AND rf.profile_id = ad.profile_id(+)
    AND rf.profile_id = ag.profile_id(+)
    AND rf.parent_profile_field_id = prf.data_element_id(+)
    AND prf.profile_id = prd.profile_id(+)
    AND prf.profile_id = pmc.profile_id(+)
    AND prf.profile_id = pad.profile_id(+)
    AND prf.profile_id = pag.profile_id(+)
    AND rf.data_element_id = cfg.cfg_value(+)
    AND rf.data_element_id = rslt.data_element_id(+);
    Can you tell me how can I rewrite it with 'LEFT OUTER JOIN' syntax?
    Regards,
    Kotesh

  • ORA-00904 on CREATE TABLE with virtual column based on XMLTYPE content

    Hello,
    this is another one for the syntax gurus...
    Trying the following, fails with ORA-00904: "MESSAGE"."GETROOTELEMENT": invalid identifier
    CREATE TABLE XML_TEST_VIRT
       MSG_TYPE         GENERATED ALWAYS AS (MESSAGE.GETROOTELEMENT()) VIRTUAL,
       MESSAGE  XMLTYPE             NOT     NULL,
       IE906    XMLTYPE             DEFAULT NULL
       XMLTYPE COLUMN MESSAGE STORE AS SECUREFILE BINARY XML
       XMLTYPE COLUMN IE906   STORE AS SECUREFILE BINARY XML
    /while this one succeeds
    CREATE TABLE XML_TEST_VIRT
       MSG_TYPE         GENERATED ALWAYS AS (EXTRACT(MESSAGE, '/*').GETROOTELEMENT()) VIRTUAL,
       MESSAGE  XMLTYPE             NOT     NULL,
       IE906    XMLTYPE             DEFAULT NULL
       XMLTYPE COLUMN MESSAGE STORE AS SECUREFILE BINARY XML
       XMLTYPE COLUMN IE906   STORE AS SECUREFILE BINARY XML
    /The GETROOTELEMENT member function of SYS.XMLTYPE is declared as "DETERMINISTIC PARALLEL_ENABLE" so the method getting called is not the problem as the 2nd case proves.
    Using the column MESSAGE which is of type XMLTYPE directly seems to be the problem. But the question is "why". The EXTRACT function result is of type XMLTYPE and calling its member works, the column is also of type XMLTYPE yet calling its member fails...
    Thanks in advance for any insights on this.
    Best Regards
    Philip

    Hmmmm ... I don't know if I should smile or frown with the implication that I am an OO guy :D :D
    Most of my colleagues when I started working as a software engineer, treated me as too low-level because of my C background (started doing C in 1985).
    In my last job, my colleagues hated my guts because I was asking them to squeeze every bit of performance out of C++ by using STL which is definitely not OO (although C++ is).
    My current colleagues treat me as a DB guru (which I most definitely am not) and they overlook/forget the fact that most of them use Java libraries in their projects, that I wrote for them !
    I am inclined to believe that I do not fall into any category in the end...
    The only thing I am for sure - and I am proud of it - is inquisitive. I want to know everything there is about the tools I use, and so I end up spending hours and hours investigating... (Microsoft found that out the hard way when I filed 16 bug reports in 8 days when Visual C++ 6 came out ! Not that it hurt them though...)
    This is where my confession ends (and my working on the XML validator starts...)
    Καληνύχτα Marco
    Philip (Φίλιππος in Greek)
    PS: I did not follow the last solution anyway. I just wanted to verify its operability ;)

  • ORA-00904 After modifying table

    I have a versioned table named cnstrnt. Due to the number of existing constraints, I was unable to unversion it, but had to add a column (note: bad idea #1). I ran the command "exec dbms_wm.beginddl('cnstrnt'); alter table cnstrnt_lts add (cnstrnt_num number(1) not null); " When I tried to commit, I received an error. Another error was received when rolling back. I then forced the commit using the ignore_last_error=>true (bad idea #2); I then decided that I had no choice but to unversion it (wish that I had come to this conclusion earlier); I received an error that it had a problem with the my new column. In my infinate wisdom, I tried to roll back the DB to a point in time before I started messing with the table. I did not go back far enough, and because it was open with "resetlogs", no longer have the datafiles. I was able to do a beginddl on the table, and removed the column. It commited without a problem. Now that I am trying to do a new ddl on the table (new constraint to an existing versioned table), I am receiving the ORA-00904 error stating that the cnstrnt_num column is an invalid qualifier. I see everywhere that I went wrong. Any help on getting me out of this mess?

    We support all of the conditions that you list. When you need to perform DDL on a table that contains a foreign key, you need to be sure to call beginDDL and commitDDL on the tables in the appropriate order, which is outlined in the user guide. Also note that workspaces are not created for a specific table. Once a workspace is created it can be used by any user that has the necessary privileges, and any table can be modified within it.
    I think the issue here is that ignore_last_error was set to true, and the statement that was ultimately skipped, was required for normal functionality. This parameter should only be used when it is safe to do so, and you know how to recover from skipping the statement.
    If you do end up filing a TAR, all of this can be addressed further using your specific case/example.
    Regards,
    Ben

  • ORA-00904 on create table with xmltype column

    Hi,
    I am trying to create a table with syntax
    CREATE TABLE ss_test(docid integer primary key, content varchar2(4000),acl XMLType)
    XMLType column acl store as object relational
    XMLSchema "acl.xsd" element "acl"
    varray xmldata."ace" store as table ace_tab;
    and getting ORA-00904.
    acl.xsd is registered as
    begin
    dbms_xmlschema.registerschema('acl.xsd',
    ' <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xdb="http://xmlns.oracle.com/xdb">
    <xs:element name="acl" xdb:SQLType="ACL_TYPE">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="ace" maxOccurs="100">
    <xs:complexType>
    <xs:attribute name="id" type="xs:integer"/>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:schema>',true,true,false,false);
    end;
    Couldnt figure out whats wrong with the syntax. Any pointers ?
    Thanks,
    Rakesh

    Hmmmm ... I don't know if I should smile or frown with the implication that I am an OO guy :D :D
    Most of my colleagues when I started working as a software engineer, treated me as too low-level because of my C background (started doing C in 1985).
    In my last job, my colleagues hated my guts because I was asking them to squeeze every bit of performance out of C++ by using STL which is definitely not OO (although C++ is).
    My current colleagues treat me as a DB guru (which I most definitely am not) and they overlook/forget the fact that most of them use Java libraries in their projects, that I wrote for them !
    I am inclined to believe that I do not fall into any category in the end...
    The only thing I am for sure - and I am proud of it - is inquisitive. I want to know everything there is about the tools I use, and so I end up spending hours and hours investigating... (Microsoft found that out the hard way when I filed 16 bug reports in 8 days when Visual C++ 6 came out ! Not that it hurt them though...)
    This is where my confession ends (and my working on the XML validator starts...)
    Καληνύχτα Marco
    Philip (Φίλιππος in Greek)
    PS: I did not follow the last solution anyway. I just wanted to verify its operability ;)

  • Nested table update gets ORA-00904 with ExecuteSQL, error-free in TOAD

    I'm trying to run an UPDATE query through the ExecuteSQL method
    of the oraDatabase object. The catch seems to be that this one
    affects a nested table (field to be updated is a table itself).
    This SQL runs perfectly in T.O.A.D. ...
    UPDATE B457.AIRLINE a SET
    a.rental_cust_code=B457.RENTCUSTCODELIST(rentcustcodes
    ('45645'),rentcustcodes('1234'),rentcustcodes('234234')) WHERE
    a.AIRLINE_CODE='RCR'
    ...but, it produces the "SQL execution error, ORA-00904: invalid
    column name" when run using ExecuteSQL.
    Do I need to use a different syntax?

    and the complete example
    SQL> create or replace TYPE t_indirizzo AS OBJECT (
      2  via VARCHAR(45),
      3  numero NUMBER,
      4  cap INTEGER(5),
      5  citta VARCHAR(30),
      6  provincia VARCHAR(30),
      7  regione VARCHAR(30)
      8  );
      9  /
    Type created.
    SQL>
    SQL>
    SQL> create or replace TYPE t_telefono AS OBJECT (
      2  num_tel NUMBER(15)
      3  );
      4  /
    Type created.
    SQL>
    SQL> create or replace TYPE t_listaTelefono AS TABLE OF t_telefono
      2  /
    Type created.
    SQL>
    SQL> create or replace TYPE t_cliente AS OBJECT (
      2  cod_cliente NUMBER(8),
      3  indirizzo t_indirizzo,
      4  email VARCHAR(30),
      5  telefono t_listaTelefono
      6  ) NOT FINAL;
      7  /
    Type created.
    SQL>
    SQL> CREATE TABLE cliente OF t_cliente(
      2  cod_cliente NOT NULL,
      3  indirizzo NOT NULL,
      4  email NOT NULL,
      5  PRIMARY KEY (cod_cliente)
      6  ) nested table telefono store as numTelCli_tab
      7  return as value
      8  /
    Table created.
    SQL>

  • Multi-row sub query returns  ORA-00904 :invalid identifier error

    I am creating a report from two tables that I am not joining. I want a single line for every row in table1 that meets a date range. Table2 can contain none or many rows for each recored in table1. I want to get up to two fields from table2.
    I was using a case statement to check if there was data and then an in-line query or subquery. Once again, the idea is to have a single line on the report for each table1 record.
    I get this error with the code below. It seems the nested multi-row subquery can not see the a.cr_mas_cr_no identifier.
    ORA-00904: "a"."cr_mas_cr_no": invalid identifier
    Any help is greatly appreciated,
    Sam
    select
    a.cr_mas_cr_no "CRNO", a.cr_mas_type "TYPE", a.cr_mas_status "CR Status",
    a.cr_mas_date_logged "Logged date", a.CR_REL_REQ_APP_DATE "RTP approved",a.CR_REL_REQ_RTP_DATE "RTP Date",
    a.cr_accepted_date "Complete", a.cr_mas_submitted_by "Requester",
    select doc_user FROM crrm_cr_documents WHERE doc_cr_number =a.cr_mas_cr_no and rownum = 1 and DOC_TYPE = 'BD' ) "Bus Design",
    (select doc_user FROM crrm_cr_documents WHERE doc_cr_number = a.cr_mas_cr_no and rownum = 1 and DOC_TYPE = 'TD' ) "Tech Design",
    (select doc_user FROM crrm_cr_documents WHERE doc_cr_number = a.cr_mas_cr_no and rownum = 1 and DOC_TYPE = 'TE' ) "User acceptance test",
    case
    when (select count(appr_user) from crrm_cr_approvals where appr_cr_no = a.cr_mas_cr_no and appr_type = 'RTP') > 0
    then (select appr_user from (select * from crrm_cr_approvals where appr_cr_no = a.cr_mas_cr_no and appr_type = 'RTP') where rownum = 1)
    end
    "RTP #1",
    case
    when (select count(appr_user) from crrm_cr_approvals where appr_cr_no = a.cr_mas_cr_no and appr_type = 'RTP') > 1
    then (select appr_user from (select * from crrm_cr_approvals where appr_cr_no = a.cr_mas_cr_no and appr_type = 'RTP') where rownum = 2)
    end
    "RTP #2",
    a.CR_REL_REQ_RTP_BY "Released by",
    a.CR_ACCEPTED_BY "Post RTP User Acceptance",
    a.cr_mas_title "Title", a.cr_mas_id "ID"
    from
    crrm_crmaster a
    where
    (a.CR_REL_REQ_RTP_DATE >= :P1109_BEGDATE and (a.CR_REL_REQ_RTP_DATE <= :P1109_ENDDATE) and
    (a.cr_mas_status = 'Complete' or (a.cr_mas_status = 'Release Approved'and a.CR_REL_REQ_APP_DATE < :P1109_ENDDATE))
    Message was edited by:
    slavanaway

    Iceman,
    Thanks for the reply I will try your suggestion.
    I will try and explain why I think two subqueries (an in-line query with a subquery?) are required. I will use the creation of the column RTP #1 as the example as the RTP #2 column is only different in the rownum selected.
    Looking only at the lines that fail, here is my analysis. (If I rem out the two case lines the query runs, I just don't get two columns of data I need.) I will only examine the first case as the second is changed to extract the second approval via the rownum = 2 criteria. The first statement checks there is at least one RTP approval stored for the request and then gets the user who approved the request if the test is true.
    case when
    (select count(appr_user) from crrm_cr_approvals where appr_cr_no =a.cr_mas_cr_no and appr_type = 'RTP') > 0
    then
    The above part works fine and the correct count of approvals is returned.
    (select appr_user from (select * from crrm_cr_approvals where appr_cr_no=a.cr_mas_cr_no and appr_type = 'RTP') where rownum = 1)
    end
    "RTP #1",
    I moved the parenthesis to the correct location. There can be multiple approvals for a given parent record. Some parent records need one, some need two approvals. If I replace
    (select appr_user from (select * from crrm_cr_approvals where appr_cr_no =a.cr_mas_cr_no and appr_type = 'RTP') where rownum = 1)
    with
    (select appr_user from approvals where appr_cr_no =a.cr_mas_cr_no and appr_type = 'RTP' and rownum = 1)
    The correct result is returned because it returns exactly one row as rownum=1 limits the query. When rownum = 2 then the query returns null as the rownum never gets to two as the rownum column is built via the set created by the second subquery.
    The subquery builds a set of approvals for a specific "cr_no" and appr_type of "RTP". the outer query then looks at the rownum of the second query
    Here is where I got the rownum information from;
    http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
    So here is what I think is happening;
    1. Main query From and Where are processed. This should provide the "set" for the query
    2.The from subqueries for RTP #1 and RTP #2 should be able to access the a.cr_mas_cr_no field and build a set from the approvals table.
    3.The RTP #1/2 subquery (inline maybe a better description?) would then get the correct row from the from subquery.
    The error "invalid identifier" refers to the a.cr_mas_cr_no field. I assume it means it can not resolve the table alias inside the subquery.
    So maybe your grouping would help, I will try.
    Sam

  • Dynamic SQL Error -ORA-00904: invalid identifier

    Hello!
    I'm really hoping I can get some fast help on this. In the interest of honesty, this is for a university oracle programming assignment. I've searched everywhere I can for the answer and haven't had any luck.
    Anyway, the problem in a nutshell. I have to write a package to write a text file. The formatting information for the file is held in a table, which has columns to define the various characteristics like justification, padding character and field value.
    RECORDTYPE FIELDNAME FIELDVALUE FIELDSIZE FIELDORDER PADDINGCHAR JUSTIFICATION DATASOURCE
    7 CreditTotal v_credit 10 5 '0' LPAD PROGRAM
    7 RecordType '7' 1 1 ' ' RPAD HARDCODE
    I can build the whole file except this footer. the FieldValue "v_credit" references a variable that has the calculated total of the credit amounts for the file. There are also "v_debit", and "(v_credit-v_debt)" entries.
    My question seems simple... How can I use this VARCHAR2 value from the table, and have it reference the variable within a Dynamic SQL string? If I use the textvalue of the column in the SQL string it gives me the invalid identifier error when it hits the EXECUTE IMMEDIATE statement. There is another row for the header which has "to_char(sysdate,'DDMMYYYY')" in it, and that runs fine. I'm assuming because they are native SQL statements and variables.
    I have tried encapsulating the v_credit in "s, and using dynamica bind variables but had the same problem passing the names to the USING clause.
    The SQL string created by the procedure is: SELECT LPAD(v_credit,10,'0' ) FROM dual
    The full error is:
    ORA-00904: "V_CREDIT": invalid identifier
    ORA-06512: at "BWOOD.PKG_BRIAN", line 108
    ORA-06512: at line 2
    Line 108 is the EXECUTE IMMEDIATE statement
    I would really appreciate someones help! I'm happy to post the procedure I've written, with the caveat that it's sloppy student work and needs cleaning up of all the experimental commented attempts:)
    Edited by: user5426606 on 20-May-2009 03:34 - Added a few more facts.

    Thank you for the fast replies. I'll post a short chunk of code to demonstrate.
    The actual procedure is quite a bit longer, but this should give you the idea.
    PROCEDURE build_dbfile (p_settlement_date IN DATE, p_settlement_key IN VARCHAR2, p_type IN VARCHAR2) AS
    v_sqlString    VARCHAR2(4000) := 'SELECT ';
    v_rectype     NUMBER := 7;
    v_line           LONG;
    v_debit        NUMBER := 0;
    v_credit       NUMBER := 0;
    v_nrRecords    NUMBER := 0;
      CURSOR c_settlement IS... -- to select records for data rows
    -- cursor to select the rows with the file formatting and data info
      CURSOR c_header IS   SELECT   NVL(fieldvalue,fieldname) db_field, <---- selects the data column
                                                   fieldsize,
                                                   NVL(paddingchar, ''' ''') paddingchar,
                                                   NVL(justification,'LPAD') justification,
                                                  datasource
                                      FROM     FSS_DESKBANK_REF
                                      WHERE    recordtype = r_rec_types.recordtype
                                      ORDER BY recordType, fieldorder;
    -- SELECT to get the SUM of datarows for v_credit
      SELECT      SUM(transactionamount)
      INTO      v_credit...
    -- SELECT to get the SUM of datarows for v_debit
      SELECT      SUM(transactionamount)
      INTO      v_debit....
    FOR r_head IN c_header LOOP
    v_sqlString := v_sqlString  || r_head.justification|| '('
                                         || r_head.db_field ||','
                                         || r_head.fieldsize || ','
                                         || r_head.paddingchar || ')';
    v_sqlString := v_sqlString || ' FROM ' || v_tbl_name;
    DBMS_OUTPUT.PUT_LINE('SQL --> '||v_sqlString);
    EXECUTE IMMEDIATE v_sqlString INTO v_line;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE(v_line);
    END build_dbfile;So the loop goes through the table rows, grabs each data value and formatting column, and builds the sql string, which is then passed to the execute statement. The issue is the ones where the datarow contains a reference to v_credit, and the error is generated. ie r_head.db_field contains the string "v_credit"
    Satish, the sql does look like that in the string, but the string is built from the table, not hardcoded. ie v_sqlString = "SELECT LPAD(v_credit,10,'0' ) FROM dual" when it is passed to the EXECUTE IMMEDIATE.
    Edited by: user5426606 on 20-May-2009 05:19

  • Hibernate generated SQL produces ORA-00904

    I am using Hibernate to do the O/R-mapping in my application. One of my HQL queries is translated into a SQL query which produces an ORA-00904.
    I have tracked down the problem to a simple SQL example:
    create table a (b integer, c integer);
    create table d (b integer, e integer);
    create table f (c integer, g integer);
    select *
    from a, d
    inner join f on a.c = f.c
    where a.b = d.b;
    ORA-00904: "A"."C": invalid identifier
    I assumed that table a is visible throughout the whole query, isn't it? I have checked the above select against the documentation of the statement at
    http://download-uk.oracle.com/docs/cd/B14117_01/server.101/b10759/statements_10002.htm
    and I do not see the problem. Is this a bug in the query parser? We are using 10.1.0.3 on Linux.

    I am aware, that there are much better ways to write the query but this is the style my O/R-mapping tool is generating a query.
    The point is: why is table a not available. If you have a look at the syntax of select:
    select := subquery [for_update_clause]
    subquery:= ... FROM table_reference [ , table_reference [, table_reference ] ] ...
    tablereference:= query_table_expression ... [t_alias] .... | join_clause
    query_table_expression:= [schema.] table
    join_clause:=[inner_cross_join_claus] | ...
    inner_cross_join_claus:=table_reference [inner] JOIN table_reference ON condition | ...
    I just outlined the interesting parts of the syntax.
    Forget the where condition and think of getting a cross product of a and d but joining table f on a.
    Nowhere is stated, that i can not use an table or alias onto that table generated in the first table_reference in the a condition of an additional join.

  • ORA-00904: "ORA_ROWSCN": invalid makes release 2.1.0.63  unusable

    I originally posted this on an answered post.. reposting since it doesnt seem to get any attention when you post to an already answered post... Plus the error on the original post was a little different...
    Using 2.1.0.63, 10.2.0.4.0 64bit database, AIX OS..
    I am getting this on about 10 to 20% of my tables... ORA-00904: "ORA_ROWSCN": invalid identifier
    To reproduce select table in tree, press data tab, this error appears in Data Editor - Log window with no data in data tab.
    This did not happen in 1.5.5.
    Maybe this is the issue... Evidently this was fixed in Oracle 11g database.
    Metalink bug 5183871
    WORKAROUND:
    Do not use ANSI join syntax with ORA_ROWSCN.

    Even though I marked this resolved I have figured out more about this error. Like I said this is only happening with tables that have a policy - fine grained access. Basically no matter who I log in as, if I have a table with a policy I get the ora_rowscn error and cannot see the data in the data tab. This did not happen in 1.5. I could see the data in 1.5. So, it appears that 2.1 is using ora_rowscn in the query to get the data and 1.5 does not use ora_rowscn. So, in 2.1 if the table has a policy then the database isues the ORA-00904: "ORA_ROWSCN": invalid error and you cannot see the data.
    Can anyone else reproduce this with a table that has a policy - fine grained access.
    So, something is different in the way 1.5 and 2.1 query data from a table into the data tab.

  • Parallel Query Error (Ora 12801 Ora-00904)

    when i run this particular query in a report or in SQL it wrks
    but some times it give the error .........
    any one who could help ........ASAP
    SELECT
    D.DISTRIBUTOR_CODE "DIST_CODE",
    D.DISTRIBUTOR_NAME "DIST_NAME",
    O.OPERATOR_CODE "OPER_CODE",
    O.OPERATOR_NAME "OPER_NAME",
    O.ACTIVE_STATUS "Act",
    r.receipt_no "receipt_no",
    r.ch_or_dd_no "cheque",
    r.receipt_date "receipt_date",
    '' "channel Code",
    '' "channel_name",
    b. SUBS_IRD "ird_subs",
    b.amount "amount"
    FROM
    dms_channel_dump z,
    DMS_OPERATOR_MASTER O,
    DMS_DISTRIBUTOR_MAIN D,
    dms_receipt_header r,
    DMS_BIFURCATION b
    WHERE
    b.channel_code = z.channel_code
    and r.OPERATOR_CODE = O.OPERATOR_CODE
    AND r.DISTRIBUTOR_CODE = D.DISTRIBUTOR_CODE
    AND r.receipt_no = b.receiopt_no
    union all
    SELECT
    D.DISTRIBUTOR_CODE "DIST_CODE",
    D.DISTRIBUTOR_NAME "DIST_NAME",
    '' "OPER_CODE",
    '' "OPER_NAME",
    'N' "Act",
    r.receipt_no "receipt_no",
    r.ch_or_dd_no "cheque",
    r.receipt_date "receipt_date",
    b.channel_code "channel Code",
    z.channel_name "channel_name",
    b. SUBS_IRD "ird_subs",
    b.amount "amount"
    FROM
    dms_channel_dump z,
    DMS_OPERATOR_MASTER O,
    DMS_DISTRIBUTOR_MAIN D,
    dms_receipt_header r,
    DMS_BIFURCATION b
    WHERE
    b.channel_code = z.channel_code
    and r.OPERATOR_CODE is null
    AND r.DISTRIBUTOR_CODE = D.DISTRIBUTOR_CODE
    AND r.receipt_no = b.receiopt_no
    order by 4,7
    ERROR:
    ORA-12801: error signaled in parallel query server P004
    ORA-00904: invalid column name
    no rows selecte
    REGARDS AND TIA
    ADOLPH

    If the data never changes, there would be no reason to gather statistics.
    If the data changes, there may or may not be a reason to gather statistics. There is some risk to gathering statistics because that can cause query plans to change and you could find that a query that was working fine yesterday is running very slowly today. Failing to gather statistics, though, can have the same effect-- if a histogram on a column indicates that the maximum value of a date field is December 1, 2006 because you haven't updated statistics in a few days, the CBO may conclude that a query this column with a value of December 4 would return very few row, rather than the many rows that are really there, causing Oracle to use a different query plan. Oracle tends to believe that the latter risk is more of a concern than the former and in 10g regularly and automatically gathers statistics unless you susped that job. Some DBAs disagree with Oracle and prefer less frequent, more controlled statistics gathering.
    If you GATHER AUTO, assuming your tables are set to MONITORING, Oracle gathers statistics on every table that has had more than some cutoff percentage of rows changed since statistics were last gathered. This cutoff is generally pretty reasonable, though ideally you'd probably want to gather statistics more frequently on smaller tables (adding 30 new rows to a 100 row table is probably more significant from a query plan perspective than adding 3 million rows to a 10 million row table) and less frequently on larger tables, more frequently on tables that have volatile data distributions (i.e. our DATE table) and less frequently on tables whose data distribution is relatively constant.
    Justin

  • ORA-00904: invalid column name - trying to sum

    Hi all
    probably somrthing really stupid and easy that I'm missing but here goes
    I am trying to gather data from 3 tables, 1st one is stock master file - all records are unique key
    2nd table is barcodes, product key can occur 2 / 3 times - one for each barcode that is assigned to a product.
    3rd table is warehouse stock, again key can occur a few times as there is a key for each stock record
    I need to pull the data from 1st two tables and sum the total of warehouse stock for each record pulled.
    I know I will get 2 or 3 records for each stock item as each record will return with a different barcode. what I'm trying to eliminate is returning the same records again with a separate row for each set of warehouse stock records.
    If I run
    select rmdept||','||rmstyl||','||rmcolr||','||rmsize||','||rmvatc||','||rmshgp||','||
    rmdesc||','||rmacod||','||rmcdes||','||rmzdes||','||rmsupp||','||rmsspr||','||
    rmlcos||','||rsbarc||','||rmpord||','||rmmrch||','||rmcomq||','||rdcstk
    from (select unique a.rmdept,a.rmstyl,a.rmcolr,a.rmsize,a.rmvatc,a.rmshgp,
    a.rmdesc,a.rmacod,a.rmcdes,a.rmzdes,a.rmsupp,a.rmsspr,a.rmlcos,c.rsbarc,a.rmpord,a.rmmrch,
    a.rmcomq, b.rdcstk
    from stkmas a, stkwar b, stkbar c
    where a.rmdept = c.rsdept(+) and a.rmstyl = c.rsstyl(+) and a.rmcolr = c.rscolr(+)
    and a.rmsize = c.rssize(+) and a.rmdept = b.rddept(+) and a.rmstyl = b.rdstyl(+)
    and a.rmcolr = b.rdcolr(+)
    and a.rmsize = b.rdsize(+)
    group by rmdept, rmstyl, rmcolr, rmsize, rmvatc, rmshgp,
    rmdesc, rmacod, rmcdes, rmzdes, rmsupp, rmsspr, rmlcos, rsbarc, rmpord,
    rmmrch, rmcomq, rdcstk)
    order by rmdept, rmstyl, rmcolr
    I get all the data I want, but duplicate rows for every stock record
    53117701612,1,705,ECKO LOGO STEE W,,X*BRT.ROSE,WMN 12,G12,25,6.44,,0,LT,539,1
    53117701612,1,705,ECKO LOGO STEE W,,X*BRT.ROSE,WMN 12,G12,25,6.44,,0,LT,539,228
    the last column is the stock record
    I would like to return just one row showing warehouse stock as 229
    If I run
    select rmdept||rmstyl||rmcolr||rmsize||','||rmvatc||','||rmshgp||','||
    rmdesc||','||rmacod||','||rmcdes||','||rmzdes||','||rmsupp||','||rmsspr||','||
    rmlcos||','||rsbarc||','||rmpord||','||rmmrch||','||rmcomq||','||sum(rdcstk)
    from (select unique a.rmdept,a.rmstyl,a.rmcolr,a.rmsize,a.rmvatc,a.rmshgp,
    a.rmdesc,a.rmacod,a.rmcdes,a.rmzdes,a.rmsupp,a.rmsspr,a.rmlcos,c.rsbarc,a.rmpord,a.rmmrch,a.rmcomq, b.rdcstk
    from stkmas a, stkwar b, stkbar c
    where a.rmdept = c.rsdept(+) and a.rmstyl = c.rsstyl(+) and a.rmcolr = c.rscolr(+)
    and a.rmsize = c.rssize(+) and a.rmdept = b.rddept(+) and a.rmstyl = b.rdstyl(+)
    and a.rmcolr = b.rdcolr(+)
    and a.rmsize = b.rdsize(+))
    group by rmdept, rmstyl, rmcolr, rmsize, rmvatc, rmshgp,
    rmdesc, rmacod, rmcdes, rmzdes, rmsupp, rmsspr, rmlcos, rsbarc, rmpord,
    rmmrch, rmcomq, rdcstk
    order by rmdept, rmstyl, rmcolr
    sum on rdcstk in first select statement, I still get two records returned
    00101401409,1,001,NKE ULTRACELL M,,B/W/R CL44,SIZE 9,N01,5,15.24,0010140194095,0,FW,-1,-1
    00101401409,1,001,NKE ULTRACELL M,,B/W/R CL44,SIZE 9,N01,5,15.24,0010140194095,0,FW,-1,0
    If I change sum to 2nd select statement and leave the group by statement outside the brackets
    select rmdept||rmstyl||rmcolr||rmsize||','||rmvatc||','||rmshgp||','||
    rmdesc||','||rmacod||','||rmcdes||','||rmzdes||','||rmsupp||','||rmsspr||','||
    rmlcos||','||rsbarc||','||rmpord||','||rmmrch||','||rmcomq||','||rdcstk
    from (select unique a.rmdept,a.rmstyl,a.rmcolr,a.rmsize,a.rmvatc,a.rmshgp,
    a.rmdesc,a.rmacod,a.rmcdes,a.rmzdes,a.rmsupp,a.rmsspr,a.rmlcos,c.rsbarc,a.rmpord,a.rmmrch,a.rmcomq, sum(b.rdcstk)
    from stkmas a, stkwar b, stkbar c
    where a.rmdept = c.rsdept(+) and a.rmstyl = c.rsstyl(+) and a.rmcolr = c.rscolr(+)
    and a.rmsize = c.rssize(+) and a.rmdept = b.rddept(+) and a.rmstyl = b.rdstyl(+)
    and a.rmcolr = b.rdcolr(+)
    and a.rmsize = b.rdsize(+))
    group by rmdept, rmstyl, rmcolr, rmsize, rmvatc, rmshgp,
    rmdesc, rmacod, rmcdes, rmzdes, rmsupp, rmsspr, rmlcos, rsbarc, rmpord,
    rmmrch, rmcomq, rdcstk
    order by rmdept, rmstyl, rmcolr
    I get
    rmmrch, rmcomq, rdcstk
    ERROR at line 14:
    ORA-00904: invalid column name
    If I put the group by inside the brackets
    select rmdept||rmstyl||rmcolr||rmsize||','||rmvatc||','||rmshgp||','||
    rmdesc||','||rmacod||','||rmcdes||','||rmzdes||','||rmsupp||','||rmsspr||','||
    rmlcos||','||rsbarc||','||rmpord||','||rmmrch||','||rmcomq||','||rdcstk
    from (select unique a.rmdept,a.rmstyl,a.rmcolr,a.rmsize,a.rmvatc,a.rmshgp,
    a.rmdesc,a.rmacod,a.rmcdes,a.rmzdes,a.rmsupp,a.rmsspr,a.rmlcos,c.rsbarc,a.rmpord,a.rmmrch,
    a.rmcomq, sum(b.rdcstk)
    from stkmas a, stkwar b, stkbar c
    where a.rmdept = c.rsdept(+) and a.rmstyl = c.rsstyl(+) and a.rmcolr = c.rscolr(+)
    and a.rmsize = c.rssize(+) and a.rmdept = b.rddept(+) and a.rmstyl = b.rdstyl(+)
    and a.rmcolr = b.rdcolr(+)
    and a.rmsize = b.rdsize(+)
    group by rmdept, rmstyl, rmcolr, rmsize, rmvatc, rmshgp,
    rmdesc, rmacod, rmcdes, rmzdes, rmsupp, rmsspr, rmlcos, rsbarc, rmpord,
    rmmrch, rmcomq, rdcstk)
    order by rmdept, rmstyl, rmcolr
    I get
    rmlcos||','||rsbarc||','||rmpord||','||rmmrch||','||rmcomq||','||rdcstk
    ERROR at line 3:
    ORA-00904: invalid column name
    I get the same even if I change the field names in the group by to a.rmdept etc.
    rmlcos||','||rsbarc||','||rmpord||','||rmmrch||','||rmcomq||','||rdcstk
    ERROR at line 3:
    ORA-00904: invalid column name
    any help, hints or tips greatly appreciated. this is an 8.1.7 database
    Thanks
    Janet

    Thanks dnikiforov
    still get the
    select a.rmdept||a.rmstyl||a.rmcolr||a.rmsize||','||a.rmvatc||','||a.rmshgp||','||rmdesc||','||rmac
    ERROR at line 1:
    ORA-00904: invalid column name
    I think its a problem with trying to select on the unique, anyway I accidentally posted a couple of threads for this and it has now been resolved by
    select a.rmdept||a.rmstyl||a.rmcolr||a.rmsize||','||a.rmvatc||','||a.rmshgp||','||
    a.rmdesc||',||a.rmacod||','||a.rmcdes||','||a.rmzdes||','||a.rmsupp||','||a.rmsspr||','||a.rmlcos||','||
    c.rsbarc||','||a.rmpord||','||a.rmmrch||','||a.rmcomq||','||sum(b.rdcstk)
    from stkmas a, stkwar b, stkbar c
    where a.rmdept = c.rsdept(+)
    and a.rmstyl = c.rsstyl(+)
    and a.rmcolr = c.rscolr(+)
    and a.rmsize = c.rssize(+)
    and a.rmdept = b.rddept(+)
    and a.rmstyl = b.rdstyl(+)
    and a.rmcolr = b.rdcolr(+)
    and a.rmsize = b.rdsize(+)
    group by a.rmdept,a.rmstyl,a.rmcolr,a.rmsize,a.rmvatc,a.rmshgp,
    a.rmdesc,a.rmacod,a.rmcdes,a.rmzdes,a.rmsupp,a.rmsspr, a.rmlcos,
    c.rsbarc,a.rmpord,a.rmmrch,a.rmcomq
    as I dont need to use the unique because the sum does it for me
    Thanks again for speedy help

Maybe you are looking for