代码之家  ›  专栏  ›  技术社区  ›  Tom

没有根据记录类型过滤记录的关系

  •  0
  • Tom  · 技术社区  · 5 年前

    这些是目前的记录

    enter image description here

      SELECT TOP (1) WITH TIES  ua.ID AS UserAgreementID ,
             A.ID AS AgreementID ,
             A.Code ,
             A.ComplianceCode ,
             A.Name ,
             A.Description ,
             A.Version ,
             ua.UserAgreementStateID ,
             uas.Name AS UserAgreementStateName ,
             ua.AcceptanceWindowExpiry ,
             declaration.GetDifferenceInDaysOrHours(ua.AcceptanceWindowExpiry) AS TimeLeft ,
             A.Data ,
             pa.ID AS AuthoredByID ,
             pa.FirstName + ' ' + pa.LastName AS AuthoredByName ,
             A.Authored ,
             ia.ID AS IssuedByID ,
             ia.FirstName + ' ' + pa.LastName AS IssuedByName ,
             A.Issued
      FROM declaration.Agreement AS A
      INNER JOIN declaration.UserAgreement AS ua ON A.ID = ua.AgreementID
      INNER JOIN declaration.UserAgreementState AS uas ON ua.UserAgreementStateID = uas.ID
      LEFT JOIN common.Person AS pa ON A.AuthoredBy = pa.ID
      LEFT JOIN common.Person AS ia ON A.IssuedBy = ia.ID WHERE ua.UserID = 607
      AND uas.Code IN ('ISS',
                       'DEF','EXP')-- Issued, Deferred
    
      AND A.Draft = CONVERT(BIT, 0) -- Not a draft.
    
      AND A.Deleted = CONVERT(BIT, 0) -- Not deleted.
    
      AND (A.Issued <= GETUTCDATE()
           OR A.Issued IS NULL)
      AND (A.Expires > GETUTCDATE()
           OR A.Expires IS NULL)
    ORDER BY A.Version DESC
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   GMB    5 年前

    我认为你想要:

    ORDER BY ROW_NUMBER() OVER(PARTITION BY A.AgreementID ORDER BY A.Version DESC)
    

    row_number() 函数对具有相同 AgreementID 降序 Version 协议ID ,函数指定秩 1 最伟大的记录 . 那么, TOP (1) WITH TIES