协助 SQL 查询分解物料清单



我正在尝试将 BOM 分解为最低的项目。我有2张桌子。

表 A:

ITEM        FORMULA
--------------------
7024        BDD39           
7024        BDD94         

表 B

FORMULA         RAW_ITEMS
---------------------------------------
BDD94           BioxDD 94 RMW0005                                
BDD94           BioxDD 94 RMP0007                  
BDD94           BioxDD 94 RMD0010                                   
BDD94           BioxDD 94 RMH0009                    
BDD39           BioxDD 39 RMA0005                              
BDD39           BioxDD 39 RMW0006                               
BDD39           BioxDD 39 RMS0005   

是否有任何提示,如何将表A中的项目替换为表B中的所有3个项目?

我的预期输出是:

Item 
-----------------------------------------
7024 BDD39              BioxDD 39 RMA0005                              
7024 BDD39              BioxDD 39 RMW0006                               
7024 BDD39              BioxDD 39 RMS0005  
7024 BDD94              BioxDD 94 RMH0007
7024 BDD94              BioxDD 94 RMA0007                              
7024 BDD94              BioxDD 94 RMW0010                               
7024 BDD94              BioxDD 94 RMS0009

通过使用 CONCAT 函数和 INNER JOIN,您可以获得所需的输出:

SELECT CONCAT(a.Item, ' ', a.Formula) AS Item,
b.raw_items
FROM TableA a INNER JOIN TableB b
ON ( b.Formula = a.Formula )
WHERE a.Formula = 'BDD39';

或 使用而不将谷BDD39分配给公式

SELECT Item, raw_items
FROM
(  
SELECT CONCAT(a.Item, ' ', a.Formula) AS Item,
b.raw_items,
dense_rank() over (order by a.Formula) dr
FROM TableA a INNER JOIN TableB b
ON ( b.Formula = a.Formula )
) q
WHERE q.dr = 1;

SQL 小提琴演示

你所要求的只是一个内部连接,这是SQL的基础:

SELECT 
A.ITEM,
A.FORMULA,
B.RAW_ITEMS
FROM 
TableA A
INNER JOIN
TableB B
ON A.Formula = B.Formula

如果所有内容都必须在一列中,您只需将其连接起来即可。这是一种方法

SELECT 
A.ITEM + ' ' +
A.FORMULA + ' ' + 
B.RAW_ITEMS As Item
FROM 
TableA A
INNER JOIN
TableB B
ON A.Formula = B.Formula

这是另一个

SELECT CONCAT(
A.ITEM, ' ',
A.FORMULA,' ',
B.RAW_ITEMS) As Item
FROM 
TableA A
INNER JOIN
TableB B
ON A.Formula = B.Formula
SELECT CONCAT(ITEM, " ", TA.FORMULA, " ",  RAW_ITEMS) AS ITEM
FROM TABLEA TA, TABLEB TB
WHERE TA.FORMULA = TB.FORMULA

最新更新