【问题标题】:How to get distinct columns clientid and code grouped together by latest date?如何按最新日期将不同的列 clientid 和 code 分组在一起?
【发布时间】:2014-09-24 09:05:54
【问题描述】:

我的表格如下:

clientid   code  band   date
49          1    2-59   1899.12.01
49          1    2-54   2004.11.01
49          1    0-54   2013.05.17
49          2    60-64  1899.12.01
49          2    55-59  2004.11.01
49          3    65-69  1899.12.01
49          3    60-64  2004.11.01  

我怎样才能在最新日期之前获得不同的(clientid 和代码)。

例如,执行解决方案后,我必须得到下表:

clientid   code  band   date
49          1    0-54   2013.05.17
49          2   55-59   2004.11.01
49          3   60-64   2004.11.01

我必须使用MAX(date)GROUP BY (clientid, code) 是合乎逻辑的。这个逻辑似乎是正确的,但是当我执行它时,它给了我一个错误,即乐队不包含在 GROUP BY 中。但是,我不能将乐队包含到 GROUP BY 中,因为它不会正确排序。

以下是我目前实现的代码。

SELECT clientid, code, band, MAX(date)
FROM tempTeble
GROUP BY clientid, code;

【问题讨论】:

    标签: tsql select group-by distinct aggregate-functions


    【解决方案1】:

    您可以使用将与主查询相关联的子查询。试试这个:

    SELECT clientid, code, band, date
    FROM tempTable t
    WHERE date = (
        SELECT MAX(date)
        FROM tempTable t2
        WHERE t2.clientid = t.clientid AND t2.code = t.code)
    

    子查询为 clientidcode 的每个组合找到最大日期。对于 date 等于最大日期(由子查询找到)的 clientidcode 的每个组合,主查询只返回这些记录)。

    【讨论】:

      【解决方案2】:

      我使用公用表表达式的解决方案

      WITH cte as
      (
      SELECT clientid,code,MAX(date) AS date from tempTable
      GROUP BY clientid,code
      )
      SELECT t.* 
      FROM cte c
      INNER JOIN tempTable t
      ON c.clientid=t.clientid
      AND c.code=t.code
      AND c.date=t.date
      

      为了品种,也可以使用join来完成

      SELECT t1.*
      FROM tempTable t1 
      JOIN (SELECT clientid,code,MAX(date) AS date from tempTable GROUP BY clientid,code) t2
      ON t1.clientid=t2.clientid
      AND t1.code=t2.code
      AND t1.date=t2.date
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-22
        • 2011-11-01
        • 2021-05-13
        • 2021-12-12
        • 1970-01-01
        • 2012-09-26
        • 1970-01-01
        相关资源
        最近更新 更多