易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 按月查询

项目中需要根据课件名称按月统计出访问的情况,第一次我采用了最土的一种办法,使用循环,给sql传递年月两个参数,
for(var y=2009;y<=2010;y++){
    for(var m=1;m<=12;m++){
          // todo : SQL 查询
    }
}
这样,统计2009年到2010年的月报表,就需要循环2*12 次,如果数据库中某月并未有数据,那么就等于是白白占用带宽请求服务器了。
经过linchun的点拨,结合冰哥之前的查询,使用Convert 和Datepart 即可实现这种查询,然后再在前台通过JavaScript处理数据。
SELECT a.[ID]
,a.[Name]
,fna(a.[ID], CONVERT([datetime],CONVERT([varchar](8),b.[Timestamp],(102))+'01',0) ) as UserCount ,(CONVERT([datetime],CONVERT([varchar](8),b.[Timestamp],(102))+'01',0)) as ReportDate
from [dbo].[lcms_CourseWare] a
inner join [dbo].[lcms_SessionTime] b
on a.[ID] = b.[CourseWareID]
where [State]=1
and [DelFlag]=0
group by (CONVERT([datetime],CONVERT([varchar](8),b.[Timestamp],(102))+'01',0))
,a.[ID],a.[Name]
在function 中,接收时间参数:
CREATE FUNCTION fna(
@CourseWareID varchar(32)
, @ReportDate datetime
)
RETURNS bigint
AS
BEGIN
RETURN (
SELECT COUNT(distinct [UserID])
from [dbo].[lcms_SessionTime]
WHERE CourseWareID = @CourseWareID
and year([Timestamp])=DATEPART(YEAR,@ReportDate)
and month([Timestamp])=DATEPART(MONTH,@ReportDate)
)
END
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

VB+SQL编写数据库管理系统

     参照案例教程建立的数据库管理系统在甚多方面都存在问题。可能是新手,不管是对于大一就学过的VB编程还是这个学期刚接触的SQL,很多小问题常常出现在调试过程中。想请熟悉使用这两个平台的高手帮忙指点一下。
     1.如何解决DataGrid中多个column和SQL中多个表的绑定?目的 ......

SQL语句优化方法

我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。

(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):

Oracle的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在f ......

sql语句中left join、inner join中的on与where的区别

table a(id, type):
id     type 
----------------------------------
1      1         
2      1          
3   &n ......

我想用一条SQL显示这样的结果

不知道这样的要求能不能实现?
比如我有一张表T1,里面只有一个字段1
里面有100条记录,如下所示:
字段1
A1
A2
A3
A4
...
A100
我想用一条SQL显示这样的结果
第一列    第二列    ...        第十列
A1        A11    &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号