首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -如果在一列中具有相同“序号”的所有行在另一列中具有相同的“槽”,则返回一个值

SQL -如果在一列中具有相同“序号”的所有行在另一列中具有相同的“槽”,则返回一个值
EN

Stack Overflow用户
提问于 2017-11-19 23:38:03
回答 2查看 32关注 0票数 0

我有一个表oeordhdr_sql,它使用Ord_No作为唯一的ID来保存订单的所有信息。在另一个表wsPKG中,我将信息存储在每个托盘上。托盘可以关联到特定订单上,在这种情况下,它会在Org_Ord_No中获得一个值,以便将其关联到oeordhdr_sql中的订单。我有一个两个都有ltrimINNER JOIN,用来匹配托盘和订单。由于可能有多个托盘与一个订单相关联,因此我们将每个托盘移动到一个名为TRK的箱(Bin_No)中,以显示它已经发货。

到目前为止,我已经有了以下代码

代码语言:javascript
运行
复制
SELECT oeordhdr_sql.ord_no, wsPKG.Bin_no
FROM wsPKG
INNER JOIN oeordhdr_sql ON LTRIM(wsPKG.Org_Ord_no) = LTRIM(oeordhdr_sql.ord_no) 
WHERE wsPKG.Bin_no = 'TRK'

它返回同一订单的多个行。

代码语言:javascript
运行
复制
   23708    TRK     
   23769    TRK     
   23769    TRK      
   23769    TRK     
   23769    TRK     
   23708    TRK     
   23708    TRK     

我希望能够为我的发货经理返回一个值,以显示与特定订单关联的所有托盘何时位于TRK中。这些价值可能会被运走。最终,我也会有一个正在加载的状态,如果一些在TRK中,但不是所有的。

EN

回答 2

Stack Overflow用户

发布于 2017-11-19 23:48:15

我想你想要一个GROUP BYHAVING

代码语言:javascript
运行
复制
SELECT oh.ord_no
FROM wsPKG p INNER JOIN
     oeordhdr_sql oh
     ON ltrim(p.Org_Ord_no) = ltrim(oh.ord_no) 
GROUP BY oh.ord_no
HAVING MIN(p.Bin_no) = 'TRK' AND MIN(p.Bin_no) = MAX(p.Bin_no)

这将返回所有oh.ord_no编号均为'TRK'的所有NULL(它会忽略NULLs,因此如果数据具有s,您可能需要指定如何处理这些bin编号。

注:JOIN状态可疑。应该没有理由在相关表之间的JOIN键上使用TRIM()。如果键是数字,这是没有意义的。如果键是字符串,则存储时不应使用前导空格或尾随空格。

票数 0
EN

Stack Overflow用户

发布于 2017-11-19 23:55:18

尝试以下操作:

代码语言:javascript
运行
复制
Select DISTINCT OS.ord_no, WP.Bin_no
FROM wsPKG WP
LEFT JOIN oeordhdr_sql OS on ltrim(WP.Org_Ord_no)=ltrim(OS.ord_no) AND WP.Bin_no='TRK'

HTH

谢谢。

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

https://stackoverflow.com/questions/47378632

复制
相关文章

相似问题

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