啥也甭说了,狂谢代码
---------------------------------------------------------------
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.回复分类' ,而后面的不是聚合函数,是两个视图做的结果相除
高手帮帮小弟吧,狂谢
---------------------------------------------------------------
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.回复分类' ,而后面的不是聚合函数,是两个视图做的结果相除
高手帮帮小弟吧,狂谢
如果需要对视图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
调用时这样:
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