啥也甭说了,狂谢代码
---------------------------------------------------------------
a视图
SELECT     c.Name AS 问题分类, COUNT(c.Name) AS 回复总数
FROM       dbo.T_Question AS a LEFT OUTER JOIN
           dbo.T_QuestionLog AS b ON a.ID = b.QID INNER JOIN
           dbo.T_QuestionType AS c ON a.QTID = c.ID
GROUP BY c.Name
b视图
SELECT     b.Name AS 问题分类, COUNT(a.ID) AS 汇总
FROM       dbo.T_Question AS a LEFT OUTER JOIN
           dbo.T_QuestionType AS b ON a.QTID = b.ID
GROUP BY b.Name调用视图语句
select a.问题分类 as name,
cast(convert(float,a.回复总数)/convert(float,b.汇总) as numeric(10,2) ) as score 
from a join b on a.问题分类=b.问题分类 
group by a.问题分类 
order by convert(float,a.回复总数)/convert(float,b.汇总) desc结果:
请求封停 2.00
技能问题 1.00
修改资料 3.40
下载问题 1.00------------------------------------------
现在要在界面加个查询,输入"开始时间""截取时间"后,把上面的满足这个时间区间的条件显示出来界面时间也取到了
DateTime dt1 = RadDatePicker1.SelectedDate.Value;
DateTime dt2 = RadDatePicker2.SelectedDate.Value; 数据库dbo.T_Question里有StartProcessDate和EndProcessDate字段怎么加代码???加上下面的代码后就报错?
where  a.startProcessDate>='" + dt1.ToString("yyyy-MM-dd") + "' and a.EndProcessDate<='" + dt2.ToString("yyyy-MM-dd") + "'选择列表中的列 'a.回复分类' 无效,因为该列没有包含在聚合函数或 GROUP BY 子
选择列表中的列 'a.回复总数' 无效,因为该列没有包含在聚合函数或 GROUP BY 子
选择列表中的列 'b.汇总' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句我可以在视图的语句中加group by 语句,关键是分组只能针对'a.回复分类' ,而后面的不是聚合函数,是两个视图做的结果相除
高手帮帮小弟吧,狂谢

解决方案 »

  1.   

    视图a中只有二个列:问题分类和回复总数,根本没有startProcessDate列,引用一个不存在的列当然会出错.
    如果需要对视图a指定时间范围,就不应该定义为视图,而应该定义为内嵌表值函数,参数为起始日期和截止日期,例如:
    create function fnTotal1(@beginDate datetime,@endDate datetime)
    returns table
    as
    return(
    SELECT     c.Name AS 问题分类, COUNT(c.Name) AS 回复总数
    FROM       dbo.T_Question AS a LEFT OUTER JOIN
               dbo.T_QuestionLog AS b ON a.ID = b.QID INNER JOIN
               dbo.T_QuestionType AS c ON a.QTID = c.ID
    WHERE  a.startProcessDate between @beginDate and @endDate   /*指定时间条件*/
    GROUP BY c.Name)
    GO
      

  2.   


    调用时这样:
    select a.问题分类 as name,
    cast(convert(float,a.回复总数)/convert(float,b.汇总) as numeric(10,2) ) as score 
    from dbo.fnTotal1('起始日期','截止日期') as a join b on a.问题分类=b.问题分类 
    group by a.问题分类 
    order by convert(float,a.回复总数)/convert(float,b.汇总) desc