首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字段从另一个表中添加到exising查询中

将字段从另一个表中添加到exising查询中
EN

Database Administration用户
提问于 2017-06-30 12:55:28
回答 1查看 56关注 0票数 -2

我们有两个系统,仓库管理系统(WMS)和SAP。

我可以在SAP中运行一个查询,它将根据WMS (A1WMS)中的信息为所有项目生成一个真正的免费库存报告。

该查询生成2列,“WH免费股票”和“产品”

每个产品也在我们的SAP数据库中。我想把分配给这些产品的产品组作为第三栏放入报告中。我怎样才能做到这一点?

谢谢

代码语言:javascript
运行
复制
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
EN

回答 1

Database Administration用户

发布于 2017-06-30 15:17:52

使用MguerraTorres提供的注释,下面是完整的选择:

代码语言:javascript
运行
复制
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数据库中也具有适当的权限。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/177679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档