【问题标题】:Retrieve Primary Address state of customer检索客户的主要地址状态
【发布时间】:2017-06-02 07:18:03
【问题描述】:

我正在尝试通过填写在客户主要地址上的 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

之后我一直尝试在DirPartyTable 上加入LogisticsLocation,然后在LogisticsPostalAddress 上加入LogisticsLocation。这给了我结果,但是不同状态的双记录。对于主地址,我只需要 1 个结果。我怎样才能做到这一点?

【问题讨论】:

  • 您能发布完整的查询,而不仅仅是部分查询吗?此外,如果您提供表格的结构,您将获得更好的答案。你确定logisticpostaladdress 和dirpartytable 是1:1 匹配的吗?
  • 考虑接受答案。

标签: sql axapta dynamics-ax-2012


【解决方案1】:

给你。显然更改客户帐户。这将获取主地址的状态,但如果您出于某种原因需要,它也具有整个主地址。

需要注意的是LogisticsPostalAddress 表是"Valid Time State" table。这意味着记录具有有效的 from/to。

您希望这样做的原因是,如果您的客户位于 123 South St,并且您创建了一个销售订单并向他发送了一张印有该地址的发票,然后您稍后将客户的主要地址更改为 654 North St。如果他们要求重新打印他们的旧发票,您需要确保之前的地址仍然存在。

我的查询需要注意的一点是,我没有检查GetUTCDate() SQL 函数和 AX 存储日期/时间的方式之间的时区是否被正确考虑。这将是一个微小的差异,但需要考虑。

这里有一个观点:

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*/
        )

这里使用了一些表格:

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*/

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 2018-08-21
    • 2011-09-09
    • 2013-08-21
    • 1970-01-01
    • 2015-01-08
    • 2021-12-23
    • 2021-12-12
    • 2018-10-23
    相关资源
    最近更新 更多