将记录与另一个表上的最新记录相结合

问题描述 投票:0回答:1

我正在尝试创建一个SQL视图。如何从一个表中选择最新记录,而将其他表保留为原样。我需要从所有表格中选择所有记录,这些记录工作正常,但我需要按日期选择最近的提案,这是我遇到的问题。

这是我到目前为止:

SELECT TOP (100) PERCENT 
    i.CustInqDate AS InquiryDate,
    i.CustomerID,
    prop.ProposalID,
    i.CustInqryID
FROM         
    ptsweb.tblCustomerInqry AS i 
LEFT OUTER JOIN
    ptsweb.tblCustomer AS tc ON tc.CustomerID = i.CustomerID 
LEFT JOIN
    ptsweb.tblProposal AS prop ON tc.CustomerID = prop.CustomerID 
                               AND prop.DateCreated = (SELECT MAX(ptsweb.tblProposal.DateCreated) 
                                                       FROM ptsweb.tblProposal)
WHERE     
    (i.CustInqDate > '1/1/2017') 
    AND tc.CustomerID = 101568

但它没有显示任何记录。该客户有多个查询和提案。有些记录有一条记录,一条提案,或者它可以是任何一种方式。

谢谢。

sql sql-server
1个回答
0
投票

我建议apply

SELECT . . .
FROM ptsweb.tblCustomerInqry i LEFT OUTER JOIN
     ptsweb.tblCustomer tc
     ON tc.CustomerID = i.CustomerID OUTER APPLY
     (SELECT TOP (1) p.*
      FROM ptsweb.tblProposal p
      WHERE tc.CustomerID = p.CustomerID 
      ORDER BY p.DateCreated DESC
     ) p
WHERE i.CustInqDate > '2017-01-01' AND tc.CustomerID = 101568;
© www.soinside.com 2019 - 2024. All rights reserved.