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

请教一个关于Case语句的问题.
表A(date,id,MacAdd)
2013-7-1  'A'  1111
2013-7-1  'A'  23122
2013-7-1  'B'  14546
2013-7-2  'A'  1235
2013-7-2  'B'  73454
..

表B
(id count)
'A'   1
'B'   2
'C'   5
...

需要7月份按天统计表A中各id每天的 COUNT(MacAdd),
但如果某天表A中某id的 COUNT(MacAdd)大于表B中该id的count的值,则这天该id取count的值。

怎样用最简单的SQL实现?

------解决方案--------------------

select A.[date],A.id,case when B.count>A.num then B.count else A.num end as num
from (
select [date],id,COUNT(MacAdd) as num
from A
group by [date],id
)A
left join B on A.id=b.id