首页 > 解决方案 > 每年计算不同的人,但只计算一次

问题描述

我将如何每年选择不同的人,但每个人只计算一次。

我的数据的一个例子是:

ID Date
1 20NOV2018    
2 06JUN2017    
2 29JUL2011    
3 05MAY2014    
4 04APR2002    
4 25APR2009

我希望我的输出看起来像:

2002 1    
2009 0    
2011 1    
2014 1    
2017 0     
2018 1

标签: sql-serversas

解决方案


使用子选择左加入不同年份,第一年出现 id 并从中计算 id。

data have;
input 
id date date9.; format date date9.; datalines;
1 20NOV2018
2 06JUN2017
2 29JUL2011
3 05MAY2014
4 04APR2002
4 25APR2009
run;

proc sql;
  create table want as 
  select each.year, count(first.id) as appeared_count
  from
    ( select distinct year(date) as year 
      from have
    ) as each
  left join
    ( select id, min(year(date)) as year
      from have group by id 
    ) as first
  on each.year = first.year
  group by each.year
  order by each.year
  ;

推荐阅读