日期:2014-05-18  浏览次数:20433 次

一个简单的计数视图,请求帮助!
表一(userlist):

Userid           varchar(key)
Username       varchar
Tel                 varchar
RegTime         Datetime

表二(result)

Userid           varchar
subject         varchar
point             int
passing         bit

两个表的USERID关联
表Result中可能存在多个相同USERID的记录
现在想得出视图:
1\将表一中每个USERID的记录列出
2\得到USERID在表二中的记录数
3\得到USERID在表二中Passing=1的记录数

数据例子
---------------------------------------------
表一:
a1         张三     52111111   2007-5-1
a2         李四     52111112   2007-5-2
b3         王五     68555512   2006-6-20

表二:
a1         数学   95       1
a1         语文   100     1
a1         英语   50       0
a2         语文   35       0
b3         数学   80       1

视图结果:
a1       3     2     ...
a2       1     0     ...
b3       1     1     ...
--------------------------------------------

请帮忙!

------解决方案--------------------
select a.userid,count(*),sum(b.Passing)
from t1 a,t2 b where a.userid=b.userid
group by a.userid
------解决方案--------------------
select 表一.Userid,count(*),sum(cast(passing as int)) from 表二 inner join 表一
on 表二.Userid=表一.Userid
group by 表一.Userid
------解决方案--------------------
select userid,count(*) 记录数 ,sum(case Passing when 1 then 1 else 0 end ) Passing的记录数 from result group by userid