Ora-00903表名无效

时间:2016-08-12 07:05:05

标签: oracle oracle-sqldeveloper

我尝试进行左连接查询并收到此错误。有人能告诉我我做错了什么吗?

SELECT incid,
  db_name,
  snap_time
FROM
  (SELECT incid,
    db_name,
    (TRUNC(MAX(optime),'MI')-TO_DATE('1970-01-01', 'YYYY-MM-DD')) * 86400000 SNAP_TIME
  FROM ticket_details s1
  WHERE optime BETWEEN sysdate-1 AND sysdate +6
  AND upper(db_name) = upper('EXPP')
  GROUP BY incid,
    db_name
  ) s1
LEFT OUTER JOIN
SELECT snap_time ,
  instance_name,
  cpu_used
FROM
  (SELECT (SNAP_TIME-TO_DATE('1970-01-01', 'YYYY-MM-DD')) * 86400000 SNAP_TIME,
    instance_name,
    ROUND( (
    CASE 'CPU_USED'
      WHEN 'CPU_USED'
      THEN CPU_USED
      WHEN 'REDO'
      THEN REDO
      WHEN 'TPS'
      THEN TPS
      WHEN 'PROCESS_USED'
      THEN PROCESS_USED
      WHEN 'LOGONS_PER_SEC'
      THEN LOGONS_PER_SEC
      WHEN 'LOGICAL_READS_MBPS'
      THEN LOGICAL_READS_MBPS
      WHEN 'LFS'
      THEN LFS
      WHEN 'LFPW'
      THEN LFPW
      WHEN 'SINGLE_BLOCK_READ'
      THEN SINGLE_BLOCK_READ
      WHEN 'IOPS_MBPS'
      THEN IOPS_MBPS
      WHEN 'PHY_READS'
      THEN PHY_READS
      WHEN 'PHY_WRITES'
      THEN PHY_WRITES
      WHEN 'STREAMS_IO'
      THEN STREAMS_IO
      WHEN 'RMAN_IO'
      THEN RMAN_IO
      WHEN 'NETWORK'
      THEN NETWORK
      WHEN 'CONCURRENCY_AAS'
      THEN CONCURRENCY_AAS
      WHEN 'COMMIT_AAS'
      THEN COMMIT_AAS
      WHEN 'USER_IO_AAS'
      THEN USER_IO_AAS
      WHEN 'SYSTEM_IO_AAS'
      THEN SYSTEM_IO_AAS
      WHEN 'OTHERS_AAS'
      THEN OTHERS_AAS
      WHEN 'CONFIG_AAS'
      THEN CONFIG_AAS
      WHEN 'APP_AAS'
      THEN APP_AAS
      WHEN 'CLUSTER_AAS'
      THEN CLUSTER_AAS
      WHEN 'NETWORK_AAS'
      THEN NETWORK_AAS
      WHEN 'ADMIN_AAS'
      THEN ADMIN_AAS
      WHEN 'TOTAL_AAS'
      THEN TOTAL_AAS
      WHEN 'CPU_AAS'
      THEN CPU_AAS
      WHEN 'USER_CALLS'
      THEN USER_CALLS
      WHEN 'PGA_USED'
      THEN PGA_USED
      ELSE NULL
    END), 2) CPU_USED
  FROM THIRDEYE_ORACLE_METRIC_HIST
  ) s2 ON s1.db_name = s2.instance_name
AND s1.snap_time     = s2.snap_time

2 个答案:

答案 0 :(得分:2)

我认为你在左连接后缺少一个括号:

SELECT incid,
  db_name,
  snap_time
FROM
  (SELECT incid,
    db_name,
    (TRUNC(MAX(optime),'MI')-TO_DATE('1970-01-01', 'YYYY-MM-DD')) * 86400000 SNAP_TIME
  FROM ticket_details s1
  WHERE optime BETWEEN sysdate-1 AND sysdate +6
  AND upper(db_name) = upper('EXPP')
  GROUP BY incid,
    db_name
  ) s1
LEFT OUTER JOIN
( -- This Parenthesis
SELECT snap_time ,
  instance_name,
  cpu_used
FROM
  (SELECT (SNAP_TIME-TO_DATE('1970-01-01', 'YYYY-MM-DD')) * 86400000 SNAP_TIME,
    instance_name,
    ROUND( (
    CASE 'CPU_USED'
      WHEN 'CPU_USED'
      THEN CPU_USED
      WHEN 'REDO'
      THEN REDO
      WHEN 'TPS'
      THEN TPS
      WHEN 'PROCESS_USED'
      THEN PROCESS_USED
      WHEN 'LOGONS_PER_SEC'
      THEN LOGONS_PER_SEC
      WHEN 'LOGICAL_READS_MBPS'
      THEN LOGICAL_READS_MBPS
      WHEN 'LFS'
      THEN LFS
      WHEN 'LFPW'
      THEN LFPW
      WHEN 'SINGLE_BLOCK_READ'
      THEN SINGLE_BLOCK_READ
      WHEN 'IOPS_MBPS'
      THEN IOPS_MBPS
      WHEN 'PHY_READS'
      THEN PHY_READS
      WHEN 'PHY_WRITES'
      THEN PHY_WRITES
      WHEN 'STREAMS_IO'
      THEN STREAMS_IO
      WHEN 'RMAN_IO'
      THEN RMAN_IO
      WHEN 'NETWORK'
      THEN NETWORK
      WHEN 'CONCURRENCY_AAS'
      THEN CONCURRENCY_AAS
      WHEN 'COMMIT_AAS'
      THEN COMMIT_AAS
      WHEN 'USER_IO_AAS'
      THEN USER_IO_AAS
      WHEN 'SYSTEM_IO_AAS'
      THEN SYSTEM_IO_AAS
      WHEN 'OTHERS_AAS'
      THEN OTHERS_AAS
      WHEN 'CONFIG_AAS'
      THEN CONFIG_AAS
      WHEN 'APP_AAS'
      THEN APP_AAS
      WHEN 'CLUSTER_AAS'
      THEN CLUSTER_AAS
      WHEN 'NETWORK_AAS'
      THEN NETWORK_AAS
      WHEN 'ADMIN_AAS'
      THEN ADMIN_AAS
      WHEN 'TOTAL_AAS'
      THEN TOTAL_AAS
      WHEN 'CPU_AAS'
      THEN CPU_AAS
      WHEN 'USER_CALLS'
      THEN USER_CALLS
      WHEN 'PGA_USED'
      THEN PGA_USED
      ELSE NULL
    END), 2) CPU_USED
  FROM THIRDEYE_ORACLE_METRIC_HIST
  )
  )-- This one too
  s2 ON s1.db_name = s2.instance_name
AND s1.snap_time     = s2.snap_time

答案 1 :(得分:1)

...
LEFT OUTER JOIN
SELECT snap_time ,
...

这里需要一些括号