Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何纠正这个错误_Sql_Oracle - Fatal编程技术网

Sql 如何纠正这个错误

Sql 如何纠正这个错误,sql,oracle,Sql,Oracle,ORA-00904:“TM”“客户代码”:无效标识符 90400000-%s:无效标识符 *原因: *操作:第3行第22列出现错误 您将来自多个独立查询的单个选择列表合并在一起,这些查询无法看到彼此的数据或结果;它们得到不同的列数和不同的数据类型。其中一些没有限制,可能会得到很多您不期望的数据 您应该将表连接在一起,而不是合并单独的查询;比如: SELECT CU.CUST_CODE FROM AR_CUSTOMERS CU WHERE CU.CUST_CODE = TM.CUST_CODE

ORA-00904:“TM”“客户代码”:无效标识符 90400000-%s:无效标识符 *原因:
*操作:第3行第22列出现错误


您将来自多个独立查询的单个选择列表合并在一起,这些查询无法看到彼此的数据或结果;它们得到不同的列数和不同的数据类型。其中一些没有限制,可能会得到很多您不期望的数据

您应该将表连接在一起,而不是合并单独的查询;比如:

SELECT CU.CUST_CODE 
FROM AR_CUSTOMERS CU 
WHERE CU.CUST_CODE = TM.CUST_CODE
UNION
SELECT ITS.ITEMS_CODE
FROM AR_ITEMS ITS
WHERE ITS.ITEMS_CODE = TM.ITEM_CODE
UNION
SELECT ITS.ITEMS_NAME
FROM AR_ITEMS ITS
WHERE TM.INVOICE_NO = TD.INVOICE_NO AND ITS.ITEMS_CODE = TD.ITEM_CODE
UNION
SELECT TO_CHAR(TM.JOB_DATE,'MON-YY')MON FROM AR_TRANS_MASTER TM
UNION
SELECT TO_CHAR(TM.JOB_DATE,'MM-YY')MM  FROM AR_TRANS_MASTER TM
UNION
SELECT SUM(TD.QUANTITY)QUANTITY, SUM(TD.PRICE)UNIT
FROM AR_TRANS_DETAIL TD
WHERE ITS.ITEMS_CODE = TD.ITEM_CODE
AND 
TM.JOB_DATE BETWEEN :STARTDATE AND :STOPDATE
GROUP BY 
CU.CUST_CODE,ITS.ITEMS_CODE,ITS.ITEMS_NAME,TO_CHAR(TM.JOB_DATE,'MON-YY'),TO_CHAR(TM.JOB_DATE,'MM-YY')
ORDER BY
MM ASC;
未测试,您需要检查连接条件是否已按预期转换


您可以在文档中阅读更多关于和的信息。

您无权访问那里的TM.CUST_代码。在进行联合时,每个SELECT都是相互“隔离”的。您还可以从联合的每个分支获得不同的数据—不同的数据类型,甚至不同的列数。你肯定是想把这些桌子连在一起,而不是把它们连在一起?
SELECT CU.CUST_CODE, ITS.ITEMS_CODE, ITS.ITEMS_NAME, TO_CHAR(TM.JOB_DATE,'MON-YY') MON,
  TO_CHAR(TM.JOB_DATE,'MM-YY') MM, SUM(TD.QUANTITY) QUANTITY, SUM(TD.PRICE) UNIT
FROM AR_TRANS_MASTER TM
JOIN AR_CUSTOMERS CU 
ON CU.CUST_CODE = TM.CUST_CODE
JOIN AR_ITEMS ITS
ON ITS.ITEMS_CODE = TM.ITEM_CODE
JOIN AR_TRANS_DETAIL TD
ON TD.INVOICE_NO = TM.INVOICE_NO
AND TD.ITEM_CODE = ITS.ITEMS_CODE
WHERE TM.JOB_DATE BETWEEN :STARTDATE AND :STOPDATE
GROUP BY CU.CUST_CODE, ITS.ITEMS_CODE, ITS.ITEMS_NAME, TO_CHAR(TM.JOB_DATE,'MON-YY'),
  TO_CHAR(TM.JOB_DATE,'MM-YY')
ORDER BY MM ASC;