其中from中第四段查询语句 O.AREA_CODE ORA-00904 识别不到……
哪位能告诉我怎么改一下实现整个查询功能?不胜感激……
SELECT MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_1', FORM_DIC_VALUE, NULL)) 机构总数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_2', FORM_DIC_VALUE, NULL)) 政府主办设置数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_3', FORM_DIC_VALUE, NULL)) 个人主办设置数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_4', FORM_DIC_VALUE, NULL)) 其他实体主办设置数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_5', FORM_DIC_VALUE, NULL)) 辖区内中心卫生院数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_6', FORM_DIC_VALUE, NULL)) 建制乡镇卫生院数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_7', FORM_DIC_VALUE, NULL)) 涉农街道社区卫生服务中心数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_8', FORM_DIC_VALUE, NULL)) 开展基本药物制度数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_9', FORM_DIC_VALUE, NULL)) 实施基本药物财政补助,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_10', FORM_DIC_VALUE, NULL)) 辞职或自谋职业,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_11', FORM_DIC_VALUE, NULL)) 实行岗位绩效工资制数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_12', FORM_DIC_VALUE, NULL)) 在编人员月平均绩效工资收入,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_13', FORM_DIC_VALUE, NULL)) 基础工资,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_14', FORM_DIC_VALUE, NULL)) 奖励工资,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_15', FORM_DIC_VALUE, NULL)) 实行人员聘任制数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_16', FORM_DIC_VALUE, NULL)) 开展人员分流数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_17', FORM_DIC_VALUE, NULL)) 拟分流人员数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_18', FORM_DIC_VALUE, NULL)) 实行岗位绩效考核制度数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_19', FORM_DIC_VALUE, NULL)) 实行收支两条线管理,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_20', FORM_DIC_VALUE, NULL)) 财政部门统收统支,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_21', FORM_DIC_VALUE, NULL)) 卫生部门统收统支,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_22', FORM_DIC_VALUE, NULL)) 完成竞聘上岗,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_23', FORM_DIC_VALUE, NULL)) 上一年度门急诊次均费用,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_24', FORM_DIC_VALUE, NULL)) 上一年度住院次均费用,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_25', FORM_DIC_VALUE, NULL)) 提前退休,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_26', FORM_DIC_VALUE, NULL)) 办理病退,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_27', FORM_DIC_VALUE, NULL)) 轮岗待聘,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_28', FORM_DIC_VALUE, NULL)) 注册资金,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_29', FORM_DIC_VALUE, NULL)) 固定资产总值,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_30', FORM_DIC_VALUE, NULL)) 屋资产总值,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_31', FORM_DIC_VALUE, NULL)) 设备仪器资产总值,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_32', FORM_DIC_VALUE, NULL)) 上一年度门急诊总人次,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_33', FORM_DIC_VALUE, NULL)) 上一年度住院总人次,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_34', FORM_DIC_VALUE, NULL)) 上一年度总收入,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_35', FORM_DIC_VALUE, NULL)) 业务收入,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_36', FORM_DIC_VALUE, NULL)) 上级拨款,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_37', FORM_DIC_VALUE, NULL)) 其他收入,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_38', FORM_DIC_VALUE, NULL)) 列入职工基本医疗保险定点机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_39', FORM_DIC_VALUE, NULL)) 列入新农合定点机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_40', FORM_DIC_VALUE, NULL)) 医疗机构实施一体化管理机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_41', FORM_DIC_VALUE, NULL)) 政府无偿提供房屋的机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_42', FORM_DIC_VALUE, NULL)) 自建房屋机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_43', FORM_DIC_VALUE, NULL)) 房屋租赁机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_44', FORM_DIC_VALUE, NULL)) 由政府提供租赁资金机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_45', FORM_DIC_VALUE, NULL)) 编制床位数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_46', FORM_DIC_VALUE, NULL)) 实有床位数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_47', FORM_DIC_VALUE, NULL)) 观察输液躺椅数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_48', FORM_DIC_VALUE, NULL)) 设置中医诊室机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_49', FORM_DIC_VALUE, NULL)) 设置中药房机构数,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_50', FORM_DIC_VALUE, NULL)) 房屋建筑面积,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_51', FORM_DIC_VALUE, NULL)) 业务用房面积,
       MAX(DECODE(DIC_NAME, 'COLLECT_ITEM_52', FORM_DIC_VALUE, NULL)) 完成编制核定工,
       MAX(DECODE(O.ORG_NAME, O.ORG_NAME, O.ORG_NAME, NULL)) 地区名,
       
       C.*  FROM FORM_DATA F,
       REPORT_RECORD R,
       ORGANIZATION O,
       (
        
        SELECT SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_20', T.FORM_DIC_VALUE, 0)) 核定编制人数,
                SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_21', T.FORM_DIC_VALUE, 0)) 实有人数,
                SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_22', T.FORM_DIC_VALUE, 0)) 编制内人数,
                SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_23', T.FORM_DIC_VALUE, 0)) 编制外人数,
                SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_24', T.FORM_DIC_VALUE, 0)) 卫生专业技术人员数,
                SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_63', T.FORM_DIC_VALUE, 0)) 在岗人数,
                SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_64', T.FORM_DIC_VALUE, 0)) 不在岗人数,
                SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_65', T.FORM_DIC_VALUE, 0)) 正常到龄退休人数,
                SUM(DECODE(T.DIC_NAME, 'ORG_ITEM_83', T.FORM_DIC_VALUE, 0)) 已分流安置人数
          FROM FORM_DATA T, REPORT_RECORD R
         WHERE R.FORM_ID = 37
           AND R.PERIOD_ID = 120
           AND R.RECORD_FLAG = 3
           AND R.ORGANIZATION_ID IN
               (SELECT OO.ID
                  FROM ORGANIZATION OO
                 WHERE OO.IS_OPEN = 1
                 START WITH OO.AREA_CODE = O.AREA_CODE
                CONNECT BY OO.PARENT_ID = PRIOR OO.ID)
           AND R.RECORD_ID = T.RECORD_ID
        
        ) C
 WHERE F.RECORD_ID = R.RECORD_ID
   AND R.ORGANIZATION_ID = O.ID
   AND R.FORM_ID = 58
   AND R.PERIOD_ID = 120
   AND R.RECORD_FLAG = 3
   AND O.PARENT_ID = 3509
   AND O.IS_OPEN = 0

解决方案 »

  1.   

    你的O.AREA_CODE中O表在哪里啊?怎么能找到呢?
      

  2.   


    ...
               AND R.ORGANIZATION_ID IN
                   (SELECT OO.ID
                      FROM ORGANIZATION OO
                     WHERE OO.IS_OPEN = 1
                     START WITH OO.AREA_CODE = O.AREA_CODE
                    CONNECT BY OO.PARENT_ID = PRIOR OO.ID)
               AND R.RECORD_ID = T.RECORD_ID
    ...
    --想这种多表连接,就不要使用in了,难道你不觉得多表连接已经很耗时吗?
      

  3.   

    DECODE(DIC_NAME, 'COLLECT_ITEM_1', FORM_DIC_VALUE, NULL
    是不是列名有重复啊,建议在每个列上加上表的别名啊。
      

  4.   

    ...
    FROM FORM_DATA F,
           REPORT_RECORD R,
           ORGANIZATION O,
           (
    ...
    O表是在最外层的FROM中的所以这个问题也一直困扰我 哪位可以指教一下 怎么解决我上述的需求啊~
      

  5.   

    in的用法:
    select M010.*
      from ECOM010 M010
     where M010.USER_NO in (select M011.User_No from ECOM011 M011);
     
    exists的用法: 
     select M010.*
       from ECOM010 M010
      where exists (select M011.User_No
               from ECOM011 M011
              where M011.User_No = M010.USER_NO);你现在用了in,还在in中连接个了其他表,一般不这样用吧,即使你连个其他表,要不报错的话也只能是 FORM_DATA T, REPORT_RECORD R和之中的一个,也不可能跳到很外层的 ORGANIZATION O。总之这些写肯定不对