我们有两个系统,仓库管理系统(WMS)和SAP。
我可以在SAP中运行一个查询,它将根据WMS (A1WMS)中的信息为所有项目生成一个真正的免费库存报告。
该查询生成2列,“WH免费股票”和“产品”
每个产品也在我们的SAP数据库中。我想把分配给这些产品的产品组作为第三栏放入报告中。我怎样才能做到这一点?
谢谢
SELECT
CAST(TB2.QTY_UNALLOCATED as nvarchar) [WH Free Stock], TB2.PRODUCT
FROM
(SELECT T40.PRODUCT , SUM(T40.QUANTITY * T40.PACKSIZE) - SUM(ISNULL(T41.QTY_PICKLOC, 0)) - SUM(ISNULL(T42.QTY_REPLENIS, 0)) QTY_UNALLOCATED
FROM A1WMS.DBO.BINLOCAT T40
JOIN A1WMS.DBO.BINMSTR T47 ON T40.BINLABEL = T47.BINLABEL
LEFT JOIN (SELECT T41.EXTENDED, T41.BINLABEL, T41.PACKSIZE, SUM((T41.QTY_TOPICK - T41.QTY_PICKED) / T41.PACKSIZE) QTY_PICKLOC
FROM A1WMS.DBO.PICKLOC T41 WHERE T41.PCKLOC_ST = '' AND T41.ALLOCATED = '1'
GROUP BY T41.EXTENDED, T41.BINLABEL, T41.PACKSIZE) T41 ON T40.EXTENDED = T41.EXTENDED AND T40.BINLABEL = T41.BINLABEL AND T40.PACKSIZE = T41.PACKSIZE
LEFT JOIN (SELECT T42.EXTENDED, T42.BULKSLOT, T42.BULKPACK, SUM((T42.QTY_REQD * T42.PACKSIZE) / T42.BULKPACK) QTY_REPLENIS
FROM A1WMS.DBO.REPLENIS T42
GROUP BY T42.EXTENDED, T42.BULKSLOT, T42.BULKPACK) T42 ON T40.EXTENDED = T42.EXTENDED AND T40.BINLABEL = T42.BULKSLOT AND T40.PACKSIZE = T42.BULKPACK
WHERE (T40.QUANTITY > 0 OR T40.BINTYPE <> 'S') AND T40.RESERVED NOT IN ('B', 'I') AND
T40.BINLABEL NOT LIKE '#%' AND T47.RESERVED <> 'B' AND T40.BINLABEL NOT LIKE 'RECV%' AND
T40.BINLABEL NOT LIKE 'QUAR%' AND T40.BINLABEL NOT LIKE 'REP%' AND T40.BINLABEL NOT LIKE 'RET%' AND
T40.ZONE NOT IN ('Q','S','L','C','R')
GROUP BY T40.PRODUCT) TB2
发布于 2017-06-30 15:17:52
使用MguerraTorres提供的注释,下面是完整的选择:
SELECT
CAST(TB2.QTY_UNALLOCATED as nvarchar) [WH Free Stock], TB2.PRODUCT, ISNULL(NewLive.ProductGroup,'NoProductGroupFound')
FROM
(SELECT T40.PRODUCT , SUM(T40.QUANTITY * T40.PACKSIZE) - SUM(ISNULL(T41.QTY_PICKLOC, 0)) - SUM(ISNULL(T42.QTY_REPLENIS, 0)) QTY_UNALLOCATED
FROM A1WMS.DBO.BINLOCAT T40
JOIN A1WMS.DBO.BINMSTR T47 ON T40.BINLABEL = T47.BINLABEL
LEFT JOIN (SELECT T41.EXTENDED, T41.BINLABEL, T41.PACKSIZE, SUM((T41.QTY_TOPICK - T41.QTY_PICKED) / T41.PACKSIZE) QTY_PICKLOC
FROM A1WMS.DBO.PICKLOC T41 WHERE T41.PCKLOC_ST = '' AND T41.ALLOCATED = '1'
GROUP BY T41.EXTENDED, T41.BINLABEL, T41.PACKSIZE) T41 ON T40.EXTENDED = T41.EXTENDED AND T40.BINLABEL = T41.BINLABEL AND T40.PACKSIZE = T41.PACKSIZE
LEFT JOIN (SELECT T42.EXTENDED, T42.BULKSLOT, T42.BULKPACK, SUM((T42.QTY_REQD * T42.PACKSIZE) / T42.BULKPACK) QTY_REPLENIS
FROM A1WMS.DBO.REPLENIS T42
GROUP BY T42.EXTENDED, T42.BULKSLOT, T42.BULKPACK) T42 ON T40.EXTENDED = T42.EXTENDED AND T40.BINLABEL = T42.BULKSLOT AND T40.PACKSIZE = T42.BULKPACK
WHERE (T40.QUANTITY > 0 OR T40.BINTYPE <> 'S') AND T40.RESERVED NOT IN ('B', 'I') AND
T40.BINLABEL NOT LIKE '#%' AND T47.RESERVED <> 'B' AND T40.BINLABEL NOT LIKE 'RECV%' AND
T40.BINLABEL NOT LIKE 'QUAR%' AND T40.BINLABEL NOT LIKE 'REP%' AND T40.BINLABEL NOT LIKE 'RET%' AND
T40.ZONE NOT IN ('Q','S','L','C','R')
GROUP BY T40.PRODUCT) TB2
LEFT JOIN NewLive.dbo.OITM NewLive on NewLive.Product = TB2.Product
LEFT JOIN
对NewLive.dbo.OITM的使用确保了即使在OITM上找不到匹配的产品,也可以从TB2获得所有行。如果在OITM上找不到匹配的产品,将返回Newlive.ProductGroup的空值。然后,您可以使用ISNULL
提供更有意义的描述,比如将'NoProductGroupFound‘NewLive.ProductGroup添加到最上面的SELECT
语句中。
这都假设运行此查询的登录名在NewLive数据库中也具有适当的权限。
https://dba.stackexchange.com/questions/177679
复制相似问题