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
/*
* Result:
*
pay_time xiaofeishuliang xiaofeizongji shijizongji renjun
---------- --------------- ---------------- ----------------- ---------------
24/07/13 1 100.00 100.00 100.000000
(1 row(s) affected)
*/
没看出来哪里出错了。。
[解决办法]
不过确实我把楼主的语句直接COPY到查询分析器里会出错!
/*
* -------------------------------------
* 楼主的:
* -------------------------------------
*/
select?CONVERT(varchar(10),uc.pay_time,3) AS?'pay_time'
????????,COUNT(1) AS?'xiaofeishuliang'?
????????,SUM(CONVERT(decimal(18,2),uc.amount)) AS?'xiaofeizongji'?
????????,SUM(CONVERT(decimal(18,2),uc.amount)) AS?'shijizongji'?
????????,AVG(CONVERT(decimal(18,2),uc.amount)) AS?'renjun'
from?#TESTT AS?uc
where?uc.gameId=504002??
group?by?uc.pay_time?
/*
Msg 102, Level 15, State 1, Line 1
'?' 附近有语法错误。
找了半天反正没找到
*/
[解决办法]
好吧。。是我自己的错。。。。引号的原因。
[解决办法]
存储过程接受参数字符串大小设置是多少?
或是你传参的时候 指定 字符串的大小没?
------解决方案--------------------
+1