我有一个查询,它从库存仓位置和用户定义的字段中提取数据,该字段显示每个仓库的最大托盘数量。
我的数据:
Bin Code Max Pallets Total Pallets Available
000-AA-001 34 30 4
000-BB-001 24 18 6
000-CC-001 12 14 -2
我的询问:
SELECT T0."BinCode", T0."U_TRX_MaxPallets" AS "Max Pallets",
SUM(NDIV0(T1."OnHandQty", (T2."U_TRX_Ti" * T2."U_TRX_Hi"))) AS "Total Pallets", T0."U_TRX_MaxPallets" - SUM(NDIV0(T1."OnHandQty", (T2."U_TRX_Ti" * T2."U_TRX_Hi"))) AS "Available"
FROM OBIN T0 INNER JOIN OIBQ T1 ON T0."AbsEntry" = T1."BinAbs"
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode"
WHERE T1."OnHandQty" <> 0 AND T1."WhsCode" ='000' AND SUBSTRING(T0."BinCode",5,1) <> 'R' AND SUBSTRING(T0."BinCode",5,1) <> 'P' AND SUBSTRING(T0."BinCode",1,11) <> '000-OFFICE' AND SUBSTRING(T0."BinCode",1,8) <> '000-OTBD' AND "Available" > 0
GROUP BY T0."BinCode", T0."U_TRX_MaxPallets"
ORDER BY T0."BinCode"
最终结果是我需要所有可用> 0的bin代码。
我添加了一个名为 Total 的列,并删除了对 Bin 的所有引用。
当我从 group by 子句中删除 T0."U_TRX_MaxPallets" 时,它给我一条错误消息。
SELECT 'Total' AS "Total", T0."U_TRX_MaxPallets" AS "Max Pallets",
SUM(NDIV0(T1."OnHandQty", (T2."U_TRX_Ti" * T2."U_TRX_Hi"))) AS "Total Pallets", T0."U_TRX_MaxPallets" - SUM(NDIV0(T1."OnHandQty", (T2."U_TRX_Ti" * T2."U_TRX_Hi"))) AS "Available"
FROM OBIN T0 INNER JOIN OIBQ T1 ON T0."AbsEntry" = T1."BinAbs"
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode"
WHERE T1."OnHandQty" <> 0 AND T1."WhsCode" ='000' AND SUBSTRING(T0."BinCode",5,1) <> 'R' AND SUBSTRING(T0."BinCode",5,1) <> 'P' AND SUBSTRING(T0."BinCode",1,11) <> '000-OFFICE' AND SUBSTRING(T0."BinCode",1,8) <> '000-OTBD'
GROUP BY 'Total', T0."U_TRX_MaxPallets"
如果您只想过滤
available > 0
,可以使用嵌套 select 语句或 HAVING
子句来实现。
选项1:
SELECT *
FROM
(
<INSERT YOUR QUERY HERE>
)
WHERE "Available" > 0
选项2:
<INSERT YOUR QUERY HERE>
HAVING T0."U_TRX_MaxPallets" - SUM(NDIV0(T1."OnHandQty", (T2."U_TRX_Ti" * T2."U_TRX_Hi"))) > 0