Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何根据AdhocID是否为空/不为空获取要显示的邮政编码_Sql_Excel_Openedge_Progress Db - Fatal编程技术网

Sql 如何根据AdhocID是否为空/不为空获取要显示的邮政编码

Sql 如何根据AdhocID是否为空/不为空获取要显示的邮政编码,sql,excel,openedge,progress-db,Sql,Excel,Openedge,Progress Db,我目前正在尝试返回送货地址的邮政编码。我目前遇到的问题是,其中一些是临时地址,因此不会参考公司标准SiteID。每个记录都有一个companysteid,这是我可以在排序表和地址表之间连接的唯一点 我想让数据在from子句中执行或是否可以执行,就是说如果DeliveryCompanysId为空,那么返回AdHocDeliveryAddressID的邮政编码,如果没有找到站点的AddressID,然后找到该AddressID 以下是表格示例以及我目前获得的内容: 表1-订单 CompanySite

我目前正在尝试返回送货地址的邮政编码。我目前遇到的问题是,其中一些是临时地址,因此不会参考公司标准
SiteID
。每个记录都有一个
companysteid
,这是我可以
排序表
地址表
之间连接的唯一点

我想让数据在from子句中执行或是否可以执行,就是说如果
DeliveryCompanysId
为空,那么返回
AdHocDeliveryAddressID
的邮政编码,如果没有找到站点的
AddressID
,然后找到该
AddressID

以下是表格示例以及我目前获得的内容:

表1-订单

CompanySiteID   DeliveryCompanySiteID   InvoiceCompanySiteID AdHocDeliveryAddressID
 8613552                                      8613552            663401931
94823142            326963198                326963198  
633057107           634312178                565578092
表2-地址

AddressID   AddPostCode
663401931    NG1 1PQ
123          S12 1TP
456          S1 9PU
789          S11 1TY
表3-公司网站

CompanySiteID   AddressID
8613552       123
94823142      456
633057107     789
根据我在下面使用的代码,这是我得到的结果:

Site ID Site        PostCode
8613552             S12 1TP
94823142            S1 9PU
633057107           S11 1TY
Site ID Site      PostCode
8613552           NG1 1PQ            
94823142          S1 9PU
633057107         S11 1TY
我之所以相信会发生这种情况,是因为我的
JOIN
,即:

我得到当前结果的原因是因为我的加入请求:
join SBS.PUB.Address Address\u 0 ON CompanySite\u 0.AddressID=Address\u 0.AddressID

不幸的是,没有其他方法加入表,因此,我觉得我需要一些适当的东西,有效地说明如果
DeliveryCompanysId
为空,那么返回
AdHocDeliveryAddressID
的邮政编码,如果没有找到站点的
AddressID
,然后找到该
AddressID

请参阅我的代码的简化版本:

SELECT 
 CompanySite_0.CompanySiteID
    , Address_0.AddPostCode AS 'Delivery Post Code'


 FROM 

   SBS.PUB.SopOrderItem SopOrderItem_0 
    JOIN SBS.PUB.CompanySite CompanySite_0 ON SopOrderItem_0.CompanySiteID = CompanySite_0.CompanySiteID
    JOIN SBS.PUB.Address Address_0 ON CompanySite_0.AddressID = Address_0.AddressID
最后,我希望能够得到一个位置,根据我在上面展示的样本,结果应该返回为:

Site ID Site        PostCode
8613552             S12 1TP
94823142            S1 9PU
633057107           S11 1TY
Site ID Site      PostCode
8613552           NG1 1PQ            
94823142          S1 9PU
633057107         S11 1TY
而不是像:

Site ID Site     PostCode
8613552          S12 1TP 
94823142         S1 9PU
633057107        S11 1TY

我希望我已经很好地解释了这一点,因为我目前正在努力向自己解释。

我在SQL Developer中完成了这项工作,希望它能与Openedge SQL解释器(上次检查时使用的是SQL-92)配合使用

这给了我结果

 94823142   S1 9PU
633057107   S11 1TY
  8613552   NG1 1PQ

我是在SQLDeveloper中完成的,希望它能与Openedge SQL解释器一起使用(上次检查时使用的是SQL-92)

这给了我结果

 94823142   S1 9PU
633057107   S11 1TY
  8613552   NG1 1PQ

您的查询包含以前未提到的表和列。Simplify-.@jarlh我现在已经缩减了代码。这应该显示所有需要的部分。您的查询包含前面没有提到的表和列。Simplify-.@jarlh我现在已经缩减了代码。这应该显示所有需要的部分。谢谢你,这已经成功了。我需要考虑一些事情,因为结果有点出乎意料,但就解决问题的理论而言,这正是我要寻找的。谢谢你,谢谢你,这很有效。我需要考虑一些事情,因为结果有点出乎意料,但就解决问题的理论而言,这正是我要寻找的。非常感谢。