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我现在已经缩减了代码。这应该显示所有需要的部分。谢谢你,这已经成功了。我需要考虑一些事情,因为结果有点出乎意料,但就解决问题的理论而言,这正是我要寻找的。谢谢你,谢谢你,这很有效。我需要考虑一些事情,因为结果有点出乎意料,但就解决问题的理论而言,这正是我要寻找的。非常感谢。