НЕПРАВИЛЬНЫЙ идентификатор в базе данных Oracle - PullRequest
0 голосов
/ 08 февраля 2019

Я хотел бы сделать подзапросы из некоторых таблиц в базе данных Oracle, и я обнаружил, что мое кодирование вызывает ошибку.Информация об ошибке говорит;

ORA-00904: "T4". "PROD_RESULT": неверный идентификатор 00904. 00000 - "% s: неверный идентификатор" * Причина:
* Действие: Ошибка в строке: 7 Столбец:9

Вот мой код:

SELECT
       T1.LINE_CD "MACHINE",
       T2.ITM_NM "ITEM NAME".
       T1.INST_NO "MANUFACTURING NO",
       T3.PROD_ST_SCHD_DT "START SCHEDULE",
       SUM(T4.PROD_RESULT)"TOTAL PRODUCTION",
       SUM(T4.PROD_RESULT)-T1.PROD_SCHD_QTY "OUTSTANDING"
  FROM ST_SASHIZU_ALL T1,
       CM_HINMO_ALL T2,
       TMCI_IM_PROD2 T3,
       (
        SELECT INST_NO, SUM(PROD_RESULT)"TOTAL PRODUCTION" 
          FROM TMCI_IM_PROD2 
         WHERE INST_NO='M190200101' 
      GROUP BY INST_NO) T4 
         WHERE 0=0
           AND T1.ITM_CD  = T2.ITM_CD
           AND T1.INST_NO = T3.INST_NO
           AND T1.INST_NO = T4.INST_NO
           AND T1.INST_NO='M190200101'
           AND T1.LINE_CD LIKE 'A%'
           AND T3.PROD_DT 
       BETWEEN TO_DATE(:qDT_FROM, 'DDMMYYYY') 
           AND TO_DATE(:qDT_TO, 'DDMMYYYY')
        HAVING SUM(T3.PROD_RESULT + 1) <= T1.PROD_SCHD_QTY 
      GROUP BY
               T1.LINE_CD,
               T2.ITM_NM,
               T1.INST_NO,
               T3.PROD_ST_SCHD_DT,
               T3.PROD_DT
      ORDER BY 1 ASC

Я пытался изменить код, но это не помогло мне.Я также пытался найти другие способы в Google, но также я не нашел его.Кто-нибудь здесь может помочь мне исправить мою проблему, пожалуйста.Спасибо

1 Ответ

0 голосов
/ 08 февраля 2019

Проблема здесь в том, что вы пытаетесь выбрать столбец, которого у вас нет в подзапросе t4.

Что вам нужно сделать, это использовать более простой псевдоним в подзапросе, а затем использовать этот псевдонимв вашем внешнем выборе, вот так:

SELECT
       T1.LINE_CD "MACHINE",
       T2.ITM_NM "ITEM NAME".
       T1.INST_NO "MANUFACTURING NO",
       T3.PROD_ST_SCHD_DT "START SCHEDULE",
       SUM(T4.sum_prod_result) "TOTAL PRODUCTION",
       SUM(T4.sum_prod_result) - T1.PROD_SCHD_QTY "OUTSTANDING"
  FROM ST_SASHIZU_ALL T1,
       CM_HINMO_ALL T2,
       TMCI_IM_PROD2 T3,
       (
        SELECT INST_NO, SUM(PROD_RESULT) sum_prod_result
          FROM TMCI_IM_PROD2 
         WHERE INST_NO='M190200101' 
      GROUP BY INST_NO) T4 
         WHERE 0=0
           AND T1.ITM_CD  = T2.ITM_CD
           AND T1.INST_NO = T3.INST_NO
           AND T1.INST_NO = T4.INST_NO
           AND T1.INST_NO='M190200101'
           AND T1.LINE_CD LIKE 'A%'
           AND T3.PROD_DT 
       BETWEEN TO_DATE(:qDT_FROM, 'DDMMYYYY') 
           AND TO_DATE(:qDT_TO, 'DDMMYYYY')
        HAVING SUM(T3.PROD_RESULT + 1) <= T1.PROD_SCHD_QTY 
      GROUP BY
               T1.LINE_CD,
               T2.ITM_NM,
               T1.INST_NO,
               T3.PROD_ST_SCHD_DT,
               T3.PROD_DT
      ORDER BY 1 ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...