Return 多个 Table 加入的最大日期

Return Max Dates from Multible Table Join

我有三个table:

客户端

cid         name
----------- --------------------
1           Abe
2           Bill
3           Charlie

客户访问

vid         cid         service
----------- ----------- --------------------
100         1           Eval
101         1           Eval
102         2           Consult
103         3           Eval

VisitApproval

aid         vid         approved_on
----------- ----------- -----------
90          100         12/01/2014
91          101         01/10/2015
92          102         02/12/2015
93          103         NULL
94          104         03/12/2014

我需要创建一个输出,returns Eval 的最大日期,如果不存在则为 NULL:

Results
----------- -------------------- -------------------- ----------
1           Abe                  Eval                 01/10/2015
2           Bill                 NULL                 NULL
3           Charlie              Eval                 NULL

今天早些时候,我 运行 遇到了类似的问题,只有两个 table 并且能够使用类似于以下的查询解决问题:

  SELECT    c.cid ,
            c.name ,
            CONVERT(VARCHAR(10), MAX(COALESCE(ce1.period_end, '1999-09-09')), 101) AS Auth_End
  FROM      Clients AS c
            INNER JOIN ClientEpisode ce1 ON c.client_id = ce1.client_id
            LEFT OUTER JOIN ClientEpisode ce2 ON c.client_id = ce2.client_id
                                                 AND ce1.episode_id < ce2.episode_id

现在我必须做同样的事情,只是我要在三个 table 中而不是两个中做,而且我的思想会爆炸。更糟糕的是,我想我将不得不这样做三次,每次服务一次。我现在尽量保持简单,如何从多对多连接 table 中获取最大日期?

试试这个:

SELECT
    c.cid,
    c.name,
    cv.service,
    max_date = CONVERT(VARCHAR(10), MAX(va.approved_on), 101)
FROM Client c
LEFT JOIN ClientVisit cv
    ON c.cid = cv.cid
    AND cv.service = 'Eval'
LEFT JOIN VisitApproval va
    ON va.vid = cv.vid
GROUP BY
    c.cid, c.name, cv.service