【问题标题】:SQL max last_Update columnSQL max last_Update 列
【发布时间】:2020-06-12 18:48:08
【问题描述】:

我正在寻求有关以下更新查询的帮助。我正在尝试使用 contractinfo 表中的最新更新合同来更新 provreg 表,但它似乎不正确。使用 contractinfo 表上的 max(lastupdate) 字段完成此更新的最佳方式是什么?

UPDATE provreg
SET ContractName = ci.ContractID,
    ContractBegin = ci.ContractEff,
    ContractEnd = ci.contractterm
FROM provreg pr
INNER JOIN Provider P ON pr.npi = p.npi
INNER JOIN Affiliation A ON a.provid = p.provid
INNER JOIN contractinfo ci ON ci.affiliationid = a.affiliationid
WHERE CI.CONTRACTED = 'Y'
  AND ci.lastupdate = (SELECT MAX(lastupdate)
                       FROM PlanReport_QNXT_LA.dbo.contractinfo 
                       WHERE contractid = ci.contractid)

【问题讨论】:

  • 您使用的是哪个 dbms? (该语法不是 ANSI SQL。)
  • SSMS,我更改了最后一条语句,我最初发布了错误的查询,因为我尝试了不同的方式。
  • 您能否在db<>fiddle 上提供一些示例数据和预期输出?

标签: sql sql-server sql-update max


【解决方案1】:

试试下面。

UPDATE PROVREG
   SET (CONTRACTNAME, CONTRACTBEGIN, CONTRACTEND) =
          (SELECT CI.CONTRACTID, CI.CONTRACTEFF, CI.CONTRACTTERM
             FROM PROVREG PR
                  INNER JOIN PROVIDER P ON PR.NPI = P.NPI
                  INNER JOIN AFFILIATION A ON A.PROVID = P.PROVID
                  INNER JOIN CONTRACTINFO CI
                     ON CI.AFFILIATIONID = A.AFFILIATIONID
            WHERE     CI.CONTRACTED = 'Y'
                  AND CI.LASTUPDATE = (SELECT MAX (LASTUPDATE)
                                         FROM PLANREPORT_QNXT_LA.DBO.CONTRACTINFO
                                        WHERE CONTRACTID = CI.CONTRACTID));

COMMIT;

【讨论】:

  • 获取:SET 后第一个左括号处的“(”附近的语法不正确
  • 您没有向我们提供您的 rdbms。这只是给你一些想法,没有它。 @GregoryBrauninger
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 2019-03-09
  • 2021-02-02
  • 2020-06-25
  • 2020-09-29
  • 2011-01-25
相关资源
最近更新 更多