计算SQL Server中未来出现的值

时间:2018-03-23 01:28:27

标签: sql sql-server count

我有两张桌子。一个表具有不同的id。我会称之为distinct

id  date
---------------
a   2017-01-01
b   2016-01-01
c   2017-01-01

另一个表是所有出现的id的日志。我会称之为log

id    date
-----------------
a     2017-01-01
a     2016-01-01
b     2017-01-01
c     2017-01-01
b     2016-01-01
b     2015-01-01

我想要的表格是distinct中列出的日期之后及之后所有ID的计数。在这个玩具示例中,结果如下:

id  count
-----------
a     1    -- on or after 2017-01-01
b     2    -- on or after 2016-01-01
c     1    -- on or after 2017-01-01

2 个答案:

答案 0 :(得分:1)

我认为这是joingroup by

select d.id, count(l.id)
from distinct d left join
     log l
     on l.id = d.id and l.date >= d.date
group by d.id;

答案 1 :(得分:0)

使用以下代码: -

select d.id, count(*) as cnt
from distinct d 
join log l 
on d.id = l.id
where l.date >= d .date
group by d.id