向 ima_file里的ima021 插入imatemp字段的ima021,当imatemp的ima01与ima_file里的ima01一致就插入
时间: 2024-03-27 19:39:44 浏览: 24
好的,您的需求是在 ima_file 表中的 ima021 记录中插入一个 imatemp 字段,并且只有在 imatemp 的 ima01 字段与 ima_file 表中的 ima01 字段一致时才进行插入操作。如果我理解得正确的话,您可以考虑使用如下的 SQL 语句来实现:
```
INSERT INTO ima_file(ima021, imatemp)
SELECT t1.ima021, 'your_value'
FROM ima_file t1
WHERE t1.ima01 = 'your_ima01_value'
AND NOT EXISTS(
SELECT 1
FROM ima_file t2
WHERE t2.ima01 = 'your_ima01_value'
AND t2.ima021 = 'your_value'
)
```
请将上述 SQL 语句中的 'your_value' 替换为您实际要插入的 imatemp 字段的值,将 'your_ima01_value' 替换为您要插入的记录对应的 ima01 字段的值。此外,需要注意的是,上述 SQL 语句中的 NOT EXISTS 子句用于排除已经存在相同 ima021 和 imatemp 值的记录。
相关问题
LET g_sql = " g_bma01_a.bma_file.bma01,", " l_ver.ima_file.ima05,", " p_i.type_file.num5,", " l_ima05.ima_file.ima05, ", " l_ima08.ima_file.ima08,",
这段代码是一个字符串赋值操作,其中包含多个字段的名称,这些字段名称可能用于SQL查询中的表格中。具体来说,这些字段名称包括:
- g_bma01_a.bma_file.bma01
- l_ver.ima_file.ima05
- p_i.type_file.num5
- l_ima05.ima_file.ima05
- l_ima08.ima_file.ima08
这些字段名称可能代表不同的表格和列,但需要根据上下文来确定。
为什么bmb_file变成ima了,你哪里抄来的代码
非常抱歉,是我的疏忽造成了混淆。我是在之前的回答中将 `bmb_file` 误写成了 `ima_file`。实际上,这两个表是不同的表,`bmb_file` 存储了物料的BOM结构,而 `ima_file` 存储了物料的基本信息和成本等数据。
以下是使用 `bmb_file` 表完成上述任务的SQL查询:
```sql
WITH bom_tree(bmb01, bmb03, bmb53) AS (
-- 先将成品加入递归表达式
SELECT bmb01, bmb03, bmb53
FROM bmb_file
WHERE bmb01 = '1'
UNION ALL
-- 递归查询元件
SELECT b.bmb01, b.bmb03, SUM(b.bmb53 * t.bmb53) AS cost
FROM bom_tree t
JOIN bmb_file b ON t.bmb03 = b.bmb01
WHERE b.bmb04 = '1' -- 只查询原材料
GROUP BY b.bmb01, b.bmb03
)
-- 最终查询结果
SELECT bmb03, SUM(bmb53) AS cost
FROM bom_tree
WHERE bmb01 IS NULL
GROUP BY bmb03;
```
这个SQL查询和之前的查询类似,只是使用了 `bmb_file` 表来查询BOM结构和元件的成本价,而不是使用 `ima_file` 表。在递归查询元件时,加入了一个条件限制只查询原材料,并且将每个原材料的成本价乘以其在BOM中的数量(bmb53),然后将它们相加得到半成品和成品的成本价。最后,查询结果包含元件的料号和成本价。