select kbv.* from kingdee_bom_view kbv inner join T_ENG_BOM teb on kbv.BOM版本 = teb.FNUMBER只要其中T_ENG_BOM里面FMATERIALID相同FNUMBER最大的数据
时间: 2024-09-19 22:12:28 浏览: 58
这个SQL查询的意思是从两个表`kingdee_bom_view`(kbv)和`T_ENG_BOM`(teb)中选取信息。它通过联接条件`kbv.BOM版本 = teb.FNUMBER`将这两个表关联起来。特定的,它会选择`T_ENG_BOM`表中FMATERIALID字段值相同的行,并且只保留FNUMBER字段最大值的数据。
所以,查询结果会返回`kbv`表的所有列(kbv.*),其中的记录与`T_ENG_BOM`表中FMATERIALID相同且FNUMBER字段的最大值相对应。
对应的SQL查询语句可能是这样的:
```sql
SELECT kbv.*
FROM kingdee_bom_view kbv
INNER JOIN (
SELECT FMATERIALID, MAX(FNUMBER) as max_FNUMBER
FROM T_ENG_BOM
GROUP BY FMATERIALID
) teb_temp ON kbv.BOM版本 = teb_temp.FNUMBER
INNER JOIN T_ENG_BOM teb ON teb.FMATERIALID = teb_temp.FMATIRELID AND teb.FNUMBER = teb_temp.max_FNUMBER;
```
相关问题
kingdee_bom_view当内码相同取最大的fnumber如何书写sql
如果你想要在Kingdee BOM视图 (`kingdee_bom_view`) 中,对于内码(假设是FMATERIALID)相同的记录,选择其中FNUMBER值最大的一行,可以使用`ROW_NUMBER()`窗口函数结合`TOP(1)`来实现。这是一个典型的分组并排序场景。以下是SQL查询的示例:
```sql
WITH CTE AS (
SELECT
KBV.*,
ROW_NUMBER() OVER(PARTITION BY 父项物料代码 ORDER BY FNUMBER DESC) AS RowNum
FROM
kingdee_bom_view AS KBV
)
SELECT
*
FROM
CTE
WHERE
RowNum = 1
```
在这个查询中:
- `ROW_NUMBER() OVER(PARTITION BY 父项物料代码 ORDER BY FNUMBER DESC)`:对每组父项物料代码进行分组,并按照FNUMBER字段降序排序,给每一行分配一个行号。
- `RowNum = 1`: 只选择每个分组中的第一行(即FNUMBER最大的那一行)。
阅读全文