SQL为3个唯一ID选择年份的最大日期

时间:2017-11-16 12:10:47

标签: sql sql-server

我有一个这样的列表,我需要获得每个唯一ID组合的每年最长日期。

Calculated-Date|ID_A | ID_B | ID_C
   2017/11/5   |  AB |  A   |  C
   2017/10/5   |  AB |  A   |  C
   2016/10/5   |  AB |  A   |  C
   2017/10/5   |  AB |  C   |  C
   2016/10/5   |  AB |  C   |  C
   2016/10/30  |  AB |  C   |  C
   2015/10/5   |  AB |  C   |  C

我想得到的是这个

    Calculated-Date|ID_A | ID_B | ID_C
       2017/11/5   |  AB |  A   |  C
       2016/10/5   |  AB |  A   |  C
       2017/10/5   |  AB |  C   |  C
       2016/10/30  |  AB |  C   |  C
       2015/10/5   |  AB |  C   |  C

我尝试了一些子查询,但我对SQL很新,现在真的陷入了困境。任何帮助深表感谢!

我试过这个:

select distinct max(Calculated-Date), ID_A, ID_B, ID_C
    from TABLE_1
    group by Calculated-Date, ID_A, ID_B, ID_C
order by ID_A, ID_B, ID_C

3 个答案:

答案 0 :(得分:1)

您可以使用GROUP BY。 。 。有一些日期算术:

select id_a, id_b, id_c, max(calculated_date)
from t
group by id_a, id_b, id_c, year(calculated_date);

注意:这假定日期确实是使用日期/时间日期类型存储的。

答案 1 :(得分:0)

你可以尝试

<script type="text/javascript">
    var name1 ='${name}' ;
    console.log(name1);
 </script>

答案 2 :(得分:0)

Select * from
(
   Select id_a, id_b, id_c, calculateddate, 
          row_number() over ( partition by id_a,id_b,id_c,
              year(calculateddate) order by calculateddate desc) r
From table 
) x
Where r=1