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

江湖急救!!!!!!!
SQL 代码如下!


declare @dateTime datetime
declare @startTime datetime
declare @endTime datetime
declare @wname nvarchar
set @dateTime='2013-11-13'
set @wname='www.baidu.com'
set @startTime=convert(char(4),datepart(yyyy,@dateTime))+'-01-01'
set @endTime=dateadd(yyyy,1,@startTime)
select sum(readCount) as readtotal,convert(char(7),comdatetime,20)+'-01' as payt 
from WebUserFrom where webFrom=@wname and comdatetime<@endTime and comdatetime>@startTime group by convert(char(7),comdatetime,20)


错误信息如下:
消息 8120,级别 16,状态 1,第 9 行
列 'WebUserFrom.comdatetime' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

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

declare @dateTime datetime
declare @startTime datetime
declare @endTime datetime
declare @wname nvarchar
set @dateTime='2013-11-13'
set @wname='www.baidu.com'
set @startTime=convert(char(4),datepart(yyyy,@dateTime))+'-01-01'
set @endTime=dateadd(yyyy,1,@startTime)
select sum(readCount) as readtotal,convert(char(7),comdatetime,20)+'-01' as payt 
from WebUserFrom where webFrom=@wname and comdatetime<@endTime and comdatetime>@startTime group by convert(char(7),comdatetime,20)+'-01'
 
------解决方案--------------------
declare @dateTime datetime
declare @startTime datetime
declare @endTime datetime
declare @wname nvarchar
set @dateTime='2013-11-13'
set @wname='www.baidu.com'
set @startTime=convert(char(4),datepart(yyyy,@dateTime))+'-01-01'
set @endTime=dateadd(yyyy,1,@startTime)

select sum(readCount) as readtotal,convert(char(7),comdatetime,20)+'-01' as payt 
from WebUserFrom
 where webFrom=@wname and comdatetime<@endTime and comdatetime>@startTime 
 group by convert(char(7),comdatetime,20)+'-01'

------解决方案--------------------
declare @wname nvarchar
改成:
declare @wname nvarchar(50)

没有指定的长度默认为1,也就是至传入了一个w,所以没数据,找死我了
------解决方案--------------------
改成这样试试:


declare @dateTime datetime
declare @startTime datetime
declare @endTime datetime
declare @wname nvarchar(100) --由于你定义的变量长度不够,会导致下面赋值时,值被截断

set @dateTime='2013-11-13'
set @wname='www.baidu.com'  --nvarchar时,值会被截断

set @startTime=convert(char(4),datepart(yyyy,@dateTime))+'-01-01'

set @endTime=dateadd(yyyy,1,@startTime)


--这里group by和select中的必须要一样
select sum(readCount) as readtotal,
       convert(char(7),comdate