2016-12-15 60 views
0

這是我的sql腳本。我試圖拉取所有60天內尚未開具發票的項目。它只返回一行。任何想法爲什麼?謝謝你的幫助!SELECT item,date WHERE date <sysdate - 60

SELECT oel.ordered_item Part_No, 
     MAX(rca.trx_date) AS "Last Invoice Date" 
FROM oe_order_lines_all oel, 
     ra_customer_trx_all rca 
WHERE rca.trx_date < trunc(sysdate)-60 
GROUP BY oel.ordered_item 
+2

*不要*的'FROM'子句中使用逗號。 *始終*使用正確,明確,現代的'JOIN'語法。 –

+0

@GordonLinoff說什麼,你的連接條件在哪裏? – Anand

+1

錯過了rca和oel之間的內部連接條件 – LONG

回答

1

您應該添加條件這一行 '',這是inner join這裏,

SELECT oel.ordered_item Part_No, 
     MAX(rca.trx_date) AS "Last Invoice Date" 
FROM oe_order_lines_all oel, 
     ra_customer_trx_all rca 
WHERE rca.trx_date < trunc(sysdate)-60 --------shoud be a condition connects rca and oel 
GROUP BY oel.ordered_item 
1

我不知道爲什麼只返回一行。但是你缺少連接條件。如果使用適當的JOIN語法,這將是顯而易見的。

根據您的描述,您想要的邏輯更像是這樣的:

SELECT oel.ordered_item as Part_No, 
     MAX(rca.trx_date) AS "Last Invoice Date" 
FROM oe_order_lines_all oel LEFT JOIN 
    ra_customer_trx_all rca 
    ON oel.?? = rca.?? 
GROUP BY oel.ordered_item 
HAVING MAX(rca.trx_date) < trunc(sysdate) - 60 OR MAX(rca.trx_date) IS NULL; 

??是用於連接表的列。