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

sql语句在查询分析器里面正确,代码执行报错。
sql语句如下:

select CONVERT(varchar(10),uc.pay_time,3) pay_time
        ,COUNT(*) xiaofeishuliang 
        ,SUM(CONVERT(decimal(18,2),uc.amount)) xiaofeizongji 
        ,SUM(CONVERT(decimal(18,2),uc.amount)) shijizongji 
        ,SUM(CONVERT(decimal(18,2),uc.amount))/COUNT(*) renjun 
from ucpayorder as uc
where uc.gameId=504002  
group by uc.pay_time 



gameid动态设置。

在查询分析器里面是正确的,可是代码执行的时候报错了,

注意:该sql语句是提供给分页存储过程 第一个参数。

错误信息如下:
选择列表中的列 'ucpayorder.pay_time' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
sql 存储过程

------解决方案--------------------
select CONVERT(varchar(10),uc.pay_time,3) pay_time
        ,COUNT(*) xiaofeishuliang 
        ,SUM(CONVERT(decimal(18,2),uc.amount)) xiaofeizongji 
        ,SUM(CONVERT(decimal(18,2),uc.amount)) shijizongji 
        ,SUM(CONVERT(decimal(18,2),uc.amount))/COUNT(*) renjun 
from ucpayorder as uc
where uc.gameId=504002  
group by CONVERT(varchar(10),uc.pay_time,3)

我想这样应该不会错吧
------解决方案--------------------


CREATE TABLE #TESTT(gameId INT IDENTITY(1,1) PRIMARY KEY,pay_time DATETIME,amount INT) 
SELECT * FROM #TESTT
INSERT INTO #TESTT VALUES (GETDATE(),100)
SELECT CONVERT(VARCHAR(10),t.pay_time,3) AS 'pay_time',
COUNT(1) AS 'xiaofeishuliang' ,
SUM(CONVERT(DECIMAL(18,2),T.amount))AS 'xiaofeizongji',
SUM(CONVERT(DECIMAL(18,2),T.amount))AS 'shijizongji',
avg(CONVERT(DECIMAL(18,2),T.amount))AS 'renjun'
FROM #TESTT t
GROUP BY t.pay_time
GO