外部联接错误-联接日期和日期

时间:2019-12-10 05:43:38

标签: sql oracle

我使用下面的代码创建表#1;

SELECT a.DMT_MONTH, a.PRODUCT_CATEGORY, a.INVENTORY_ITEM_ID, SUM(a.OUTPUT)
FROM OUTPUT_TABLE a
  INNER JOIN CATEGORY b 
    ON a.INVENTORY_ITEM_ID = b.INVENTORY_ITEM_ID
    AND b.CATEGORY_SET_NAME = 'INVENTORY'
GROUP BY a.DMT_MONTH, a.INVENTORY_ITEM_ID, a.PRODUCT_CATEGORY;

表#1;

+-----------+------------------+-------------------+--------+
| DMT_MONTH | PRODUCT_CATEGORY | INVENTORY_ITEM_ID | OUTPUT |
+-----------+------------------+-------------------+--------+
| May-19    | Mouse            |              5648 |     50 |
| JUN-19    | Mouse            |              5648 |   1000 |
| May-19    | Keyboard         |              5646 |     20 |
| May-19    | Monitor          |              5689 |     10 |
+-----------+------------------+-------------------+--------+

我还有另一个表Table#2;

+---------------+---------+----------+
| CREATION_DATE | ITEM_ID | ISSUE_NO |
+---------------+---------+----------+
| 02/May/19     |    5648 | A1       |
| 15/May/19     |    5648 | A4       |
| 23/Jun/19     |    5646 | A8       |
+---------------+---------+----------+

END RESULT

我想将我创建的表(表#1)外部连接到表#2中。决赛桌的结果将与下面类似;

+---------------+-----------------+-----------+------------------+-------------------+--------+----------+
| CREATION_DATE | CREATION_DATE#2 | DMT_MONTH | PRODUCT_CATEGORY | INVENTORY_ITEM_ID | OUTPUT | ISSUE_NO |
+---------------+-----------------+-----------+------------------+-------------------+--------+----------+
| 02/May/19     | May-19          | May-19    | Mouse            |              5648 |     50 | A1       |
| 15/May/19     | May-19          | May-19    | Mouse            |              5648 |     50 | A4       |
| 23/Jun/19     | Jun-19          | Jun-19    | Keyboard         |              5646 |     20 | A8       |
|               |                 | Jun-19    | Mouse            |              5648 |     50 |          |
|               |                 | May-19    | Monitor          |              5689 |     10 |          |
+---------------+-----------------+-----------+------------------+-------------------+--------+----------+

我曾尝试过的如此之遥

请原谅下面代码的格式

Select d.CREATION_DATE,
  TO_CHAR(d.CREATION_DATE, 'MON-YY'),
  d.RES_INCIDENT_NUMBER ,
  d.ITEM_ID
From RAPIDVIEW.NCP_INCIDENT d
  FULL OUTER JOIN (
    SELECT a.DMT_MONTH, a.PRODUCT_CATEGORY, a.INVENTORY_ITEM_ID, SUM(a.OUTPUT)
    FROM OUTPUT_TABLE a
    INNER JOIN CATEGORY b 
     ON a.INVENTORY_ITEM_ID = b.INVENTORY_ITEM_ID
     AND b.CATEGORY_SET_NAME = 'INVENTORY'
    GROUP BY a.DMT_MONTH, a.INVENTORY_ITEM_ID, a.PRODUCT_CATEGORY
  ) c
ON (c.DMT_MONTH = d.TO_CHAR(CREATION_DATE, 'MON-YY')) AND (c.INVENTORY_ITEM_ID = d.ITEM_ID);

要在CREATION_DATE加入DMT_MONTH,我尝试创建一个额外的列TO_CHAR(CREATION_DATE,'MON-YY')以允许我将它们加入在一起。不幸的是,我一直在下面收到此错误;

ORA-00904: "D"."TO_CHAR": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 77 Column: 19

任何建议都将不胜感激。我将使用tableau中的最终输出进行分析。

1 个答案:

答案 0 :(得分:0)

设法了解我在做什么错。外部联接的日期格式不正确。请参见下面的代码;

ON (c.DMT_MONTH = d.TO_CHAR(CREATION_DATE, 'Mon-YY')) AND (c.INVENTORY_ITEM_ID = d.ITEM_ID);