select sum(case when b.date not null then 1 else 0 end) from A a
inner join B b on a.ID=b.SID
现在问题是 a.ID=b.SID 在B表中有两条,设计时有问题,现在主管要求先top 1。
不知道join中如何实现。
------解决方案--------------------
select count(distinct b.SID) from A a join B b on a.a.ID=b.SID and b.date is not null
------解决方案--------------------
重整表结构会更好
------解决方案--------------------
select sum(case when b.date not null then 1 else 0 end) from A a
inner join (select top 1 * from B) b on a.ID=b.SID
------解决方案--------------------
你这里 top 1 至少要结合order by来使用,不然每次出来的结果可能不一样。