SQL跨表查询计算

SQL Query calculation across tables

我有 3 个表使用以下查询连接:

SELECT 
    b.[_PRESS_INST_NO]
    ,a.[X_PO_NO]
    ,a.[X_GOODS_CD]
    ,a.[X_QTY]
    ,c.RM_CD
    ,c.RM_QTY
FROM 
    T1 a
    INNER JOIN T2 b ON a.X_PO_NO=b.X_PO_NO
    INNER JOIN T3 c ON b._PRESS_INST_NO=c.[_PRESS_INST_NO]

我想要的结果是 RM_QTYPerUnit 可以通过 Excel 公式完成:

RM_QTYPerUnit = X_QTY * RM_QTY / SUM(X_QTY)

X_PO_NO 的总 RM_QTY:VG00181 是 2320,X_GOODS_CD 的 RM_QTY:332034960 是 1094.34 而不是 2320。

如果我没理解错的话,你需要 SUMX_PO_NO 分割。使用 OVER 子句很容易得到:

SELECT 
    b.[_PRESS_INST_NO]
    ,a.[X_PO_NO]
    ,a.[X_GOODS_CD]
    ,a.[X_QTY]
    ,c.RM_CD
    ,c.RM_QTY
    ,a.[X_QTY] * c.RM_QTY / 
    SUM(CAST(a.[X_QTY] AS float)) OVER (PARTITION BY a.X_PO_NO) AS RM_QTYPerUnit
FROM 
    T1 a
    INNER JOIN T2 b ON a.X_PO_NO=b.X_PO_NO
    INNER JOIN T3 c ON b._PRESS_INST_NO=c.[_PRESS_INST_NO]
;

如果 X_QTY 值太大以至于它们的总和不适合 4 字节 int,则使用适当的方法将它们转换为 floatdecimal规模和精度。