我有两个表/视图,我想适当加入。它们是V_ARINVOICE_ALL
和V_GLBATCH_AR_COGS
。下图中的第三张表V_ARINVOICE_ALL
仅供参考。的Oracle SQL连接两个表/视图避免交叉产品
目前我得到的行的金额错误被退回,因为,我认为,那种交叉联接。我试图从V_GLBATCH_AR_COGS
加入Credit
。
我用下面的SQL查询来加入V_ARINVOICE_ALL
和V_ARINVOICE_ALL
和我得到的一切除了`信用正确的结果没有被选择:
SELECT
V_ARINVOICE_ALL.INVOICE_DATE,
V_ARINVOICE_ALL.ARCUSTO_COMPANY,
V_ARINVOICE_ALL.ARCUSTO_CUSTNO,
V_ARINVOICE_ALL.INVOICE_NO
FROM
IQMS.V_ARINVOICE_ALL V_ARINVOICE_ALL
INNER JOIN
IQMS.V_GLACCT V_GLACCT
ON
V_ARINVOICE_ALL.GLACCT_ID_SALES = V_GLACCT.ID AND V_GLACCT.ACCT = '3648-00-0'
WHERE
V_ARINVOICE_ALL.ARCUSTO_CUSTNO = 'OX01'
AND
V_ARINVOICE_ALL.INVOICE_DATE >= TO_DATE('05/04/2016', 'dd/mm/yyyy')
AND
V_ARINVOICE_ALL.INVOICE_DATE <= TO_DATE('15/06/2017', 'dd/mm/yyyy')
ORDER BY
V_ARINVOICE_ALL.INVOICE_DATE
结果(41行)
|INVOICE_DATE|...| INVOICE|
+------------+---+--------+
| 05/04/2016|...| 494658|
| 20/05/2016|...| 495274|
| 20/05/2016|...| 495275|
但是,当我尝试加入V_ARINVOICE_ALL
和V_GLBATCH_AR_COGS
用下面的查询:
SELECT
V_ARINVOICE_ALL.INVOICE_DATE,
V_ARINVOICE_ALL.ARCUSTO_COMPANY,
V_ARINVOICE_ALL.ARCUSTO_CUSTNO,
V_ARINVOICE_ALL.INVOICE_NO,
V_GLBATCH_AR_COGS.CREDIT AS "INCOME"
FROM
IQMS.V_ARINVOICE_ALL V_ARINVOICE_ALL
INNER JOIN
IQMS.V_GLBATCH_AR_COGS V_GLBATCH_AR_COGS
ON
V_ARINVOICE_ALL.GLBATCHID_ID = V_GLBATCH_AR_COGS.ID
AND V_ARINVOICE_ALL.GLPERIODS_ID_AR = V_GLBATCH_AR_COGS.GLPERIODS_ID
AND V_GLBATCH_AR_COGS.DESCRIP LIKE '%OX01%ITEMS%' AND V_GLBATCH_AR_COGS.ACCT = '3648-00-0'
WHERE
V_ARINVOICE_ALL.ARCUSTO_CUSTNO = 'OX01'
AND
V_ARINVOICE_ALL.INVOICE_DATE >= TO_DATE('05/04/2016', 'dd/mm/yyyy')
AND
V_ARINVOICE_ALL.INVOICE_DATE <= TO_DATE('15/06/2017', 'dd/mm/yyyy')
ORDER BY
V_ARINVOICE_ALL.INVOICE_DATE
我得到的是这样的:(165行)
|INVOICE_DATE|...| INVOICE| INCOME|
+------------+---+--------+--------+
| ... |...| ... | ... |
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 450|
| 23/06/2016|...| 495667| 450|
| 23/06/2016|...| 495667| 450|
| ... |...| ... | ... |
期望的结果(41行)
|INVOICE_DATE|...| INVOICE| INCOME|
+------------+---+--------+--------+
| ... |...| ... | ... |
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 450|
| ... |...| ... | ... |
我多一点熟悉加入比我以前。但我不确定我是否做对了。我试过正确的连接,右外连接,左连接,左外连接等。我在这里做错了什么?
编辑2:第一次编辑是坏的没有意义。我不知道这是否帮助,但只有两行,将是
| 23/06/2016|...| 495667| 225|
| 23/06/2016|...| 495667| 225|
在表中的WHERE
条款上加入匹配,其中:V_ARINVOICE_ALL.GLPERIODS_ID_AR = V_GLBATCH_AR_COGS.GLPERIODS_ID AND V_GLBATCH_AR_COGS.DESCRIP LIKE '%OX01%ITEMS%' AND V_GLBATCH_AR_COGS.ACCT = '3648-00-0
但仍然会得到它的两倍以上。所以我想这与1到Many的关系有关系。我不知道该如何处理。
如果这是任何帮助。
如果您需要更多信息请随时询问。
为什么这个标签与Excel,我看不出有什么练成都在这里。 – Luuklag
对不起。这是在excels电源查询中完成的。我会删除它。 – spyr0