SELECT项目,日期日期< sysdate - 60

时间:2016-12-15 20:15:36

标签: sql oracle

这是我的sql脚本。我试图在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 个答案:

答案 0 :(得分: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;

??用于连接表格的列。

答案 1 :(得分: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