检索客户的主地址状态
Retrieve Primary Address state of customer
我正在尝试通过 SQL 填写客户主地址的服务器检索状态。
首先我
正在尝试使用以下查询:
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
之后我一直在尝试在 DirPartyTable
上加入 LogisticsLocation
,然后在 LogisticsPostalAddress
上加入 LogisticsLocation
。这给了我结果,但是有不同状态的双重记录。对于主要地址,我只需要 1 个结果。我怎样才能做到这一点?
给你。显然更改客户帐户。这会获取主地址的状态,但如果您出于某种原因需要它,它也有完整的主地址。
需要注意的是 LogisticsPostalAddress
table 是 "Valid Time State" table。这意味着记录有一个 from/to 它们是有效的。
您想要这样做的原因是,如果您在 123 South St
有一个客户,您创建了一个销售订单并向他发送了一张印有该地址的发票,然后您稍后将客户的主要地址更改为654 North St
。好吧,如果他们要求重新打印他们的旧发票,您要确保以前的地址仍然存在。
我的查询需要注意的一件事是,我没有检查 GetUTCDate()
SQL 函数和 AX 存储 date/time 的方式之间的时区是否正确。这将是一个微小的差异,但需要考虑。
这里有风景:
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*/
)
这里使用了一些 tables:
SELECT d.STATE
FROM CUSTTABLE a
JOIN dirpartytable b ON b.RECID = a.PARTY
JOIN LOGISTICSLOCATION c ON c.RECID = b.PRIMARYADDRESSLOCATION
JOIN LOGISTICSPOSTALADDRESS d ON d.LOCATION = c.RECID
WHERE d.VALIDTO > GETUTCDATE()
AND a.ACCOUNTNUM = 'AAATest' /*Change This*/
我正在尝试通过 SQL 填写客户主地址的服务器检索状态。
首先我 正在尝试使用以下查询:
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
之后我一直在尝试在 DirPartyTable
上加入 LogisticsLocation
,然后在 LogisticsPostalAddress
上加入 LogisticsLocation
。这给了我结果,但是有不同状态的双重记录。对于主要地址,我只需要 1 个结果。我怎样才能做到这一点?
给你。显然更改客户帐户。这会获取主地址的状态,但如果您出于某种原因需要它,它也有完整的主地址。
需要注意的是 LogisticsPostalAddress
table 是 "Valid Time State" table。这意味着记录有一个 from/to 它们是有效的。
您想要这样做的原因是,如果您在 123 South St
有一个客户,您创建了一个销售订单并向他发送了一张印有该地址的发票,然后您稍后将客户的主要地址更改为654 North St
。好吧,如果他们要求重新打印他们的旧发票,您要确保以前的地址仍然存在。
我的查询需要注意的一件事是,我没有检查 GetUTCDate()
SQL 函数和 AX 存储 date/time 的方式之间的时区是否正确。这将是一个微小的差异,但需要考虑。
这里有风景:
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*/
)
这里使用了一些 tables:
SELECT d.STATE
FROM CUSTTABLE a
JOIN dirpartytable b ON b.RECID = a.PARTY
JOIN LOGISTICSLOCATION c ON c.RECID = b.PRIMARYADDRESSLOCATION
JOIN LOGISTICSPOSTALADDRESS d ON d.LOCATION = c.RECID
WHERE d.VALIDTO > GETUTCDATE()
AND a.ACCOUNTNUM = 'AAATest' /*Change This*/