我正在尝试通过填写在客户主要地址上的SQL Server来检索状态。
首先我 我试图使用以下查询:
DATABASE.dbo.LOGISTICSPOSTALADDRESS AS LPA ON DATABASE.dbo.DIRPARTYTABLE.RECID = LPA.PRIVATEFORPARTY LEFT OUTER JOIN
DATABASE.dbo.LOGISTICSADDRESSSTATE ON DATABASE.dbo.LOGISTICSADDRESSSTATE.STATEID = LPA.STATE
之后,我一直尝试加入LogisticsLocation
DirPartyTable
,然后LogisticsLocation
加入LogisticsPostalAddress
。这给了我结果,但是有不同状态的双重记录。我只需要1个主要地址的结果。我怎样才能做到这一点?
答案 0 :(得分:1)
你走了。显然更改客户帐户。这将获取主地址的状态,但如果由于某种原因需要,它还具有完整的主地址。
重要的是要注意LogisticsPostalAddress
表是"Valid Time State" table。这意味着记录具有从/到它们有效的记录。
您希望这样做的原因是,如果您的客户位于123 South St
并且您创建了销售订单并向他发送了打印了该地址的发票,那么您稍后会将客户主要地址更改为{{ 1}}。如果他们要求重新打印旧发票,您需要确保以前的地址仍然存在。
我的查询需要注意的一点是,我没有检查654 North St
SQL函数与AX存储日期/时间的方式之间是否正确考虑时区。这将是一个微小的差异,但需要考虑。
以下是一个观点:
GetUTCDate()
以下是一些表格:
SELECT a.STATE
FROM DIRPARTYPOSTALADDRESSVIEW AS a
WHERE a.ISPRIMARY = 1
AND a.VALIDTO > GETUTCDATE()
AND EXISTS (
SELECT PARTY
FROM CUSTTABLE AS b
WHERE b.PARTY = a.PARTY
AND b.ACCOUNTNUM = 'AAATest' /*Change This*/
)