日期:2014-05-17  浏览次数:20361 次

sql join 的对象top 1

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来使用,不然每次出来的结果可能不一样。