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。
如果我没理解错的话,你需要 SUM
被 X_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
,则使用适当的方法将它们转换为 float
或 decimal
规模和精度。
我有 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。
如果我没理解错的话,你需要 SUM
被 X_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
,则使用适当的方法将它们转换为 float
或 decimal
规模和精度。