请使用Oracle数据库的语法
时间: 2024-02-29 22:52:40 浏览: 60
oracle数据库语法
5星 · 资源好评率100%
好的,以下是使用 Oracle 数据库的语法递归求所有料件的成本价的 SQL 语句:
```
WITH cte(bmb01, bmb03, bmb06, bmb53, cost) AS (
SELECT bmb01, bmb03, bmb06, bmb53, bmb06
FROM bmb_file
WHERE bmb01 IS NULL
UNION ALL
SELECT b.bmb01, b.bmb03, b.bmb06, b.bmb53, c.cost + b.bmb06 * b.bmb53
FROM bmb_file b
JOIN cte c ON b.bmb01 = c.bmb03
)
SELECT bmb01, SUM(cost) AS total_cost
FROM cte
WHERE bmb01 IS NOT NULL
GROUP BY bmb01;
```
这个 SQL 语句与上面的 PostgreSQL 语句类似,只是 Oracle 的递归查询语法略有不同。具体来说,Oracle 使用 `WITH` 子句来定义递归查询,并使用 `UNION ALL` 连接递归查询的两个部分。在递归查询的第一部分中,我们选取主件料号为 NULL 的记录,将它的元件料号和成本价加入递归结果集中;在递归查询的第二部分中,我们根据上一轮的结果集中的元件料号,找到对应的主件料号和该元件的成本价,将两者相加得到该主件的成本价,并继续递归。
最后将所有主件料号的成本价加和,即可得到所有料件的成本价。
阅读全文