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

qingYun1029 2013-07-24 10:58:33
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 子句中。
...全文
348 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingYun1029 2013-07-24
  • 打赏
  • 举报
回复
引用 9 楼 Scorip 的回复:
[quote=引用 8 楼 u011096386 的回复:] [quote=引用 7 楼 qingYun1029 的回复:] 用查询分析器监视到了执行的sql语句,语句被截断了,后面order by 部分都没有了,有人遇到过么 ???
存储过程接受参数字符串大小设置是多少? 或是你传参的时候 指定 字符串的大小没?[/quote] +1[/quote] 搞定了,就是size限制的问题。歇歇啦!
qingYun1029 2013-07-24
  • 打赏
  • 举报
回复
引用 8 楼 u011096386 的回复:
[quote=引用 7 楼 qingYun1029 的回复:] 用查询分析器监视到了执行的sql语句,语句被截断了,后面order by 部分都没有了,有人遇到过么 ???
存储过程接受参数字符串大小设置是多少? 或是你传参的时候 指定 字符串的大小没?[/quote] NND,谢谢提醒,应该是传参时设置的长度限制了。。 存储过程里面开始时nvarchar(4000),后来改为varchar(8000)了。。
Scorip 2013-07-24
  • 打赏
  • 举报
回复
引用 8 楼 u011096386 的回复:
[quote=引用 7 楼 qingYun1029 的回复:] 用查询分析器监视到了执行的sql语句,语句被截断了,后面order by 部分都没有了,有人遇到过么 ???
存储过程接受参数字符串大小设置是多少? 或是你传参的时候 指定 字符串的大小没?[/quote] +1
ztszhq 2013-07-24
  • 打赏
  • 举报
回复
引用 7 楼 qingYun1029 的回复:
用查询分析器监视到了执行的sql语句,语句被截断了,后面order by 部分都没有了,有人遇到过么 ???
存储过程接受参数字符串大小设置是多少? 或是你传参的时候 指定 字符串的大小没?
qingYun1029 2013-07-24
  • 打赏
  • 举报
回复
用查询分析器监视到了执行的sql语句,语句被截断了,后面order by 部分都没有了,有人遇到过么 ???
qingYun1029 2013-07-24
  • 打赏
  • 举报
回复
引用 4 楼 Scorip 的回复:
不过确实我把楼主的语句直接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
' ' 附近有语法错误。

找了半天反正没找到

*/

不会吧,怎么搞的??
Scorip 2013-07-24
  • 打赏
  • 举报
回复
引用 4 楼 Scorip 的回复:
不过确实我把楼主的语句直接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
' ' 附近有语法错误。

找了半天反正没找到

*/

好吧。。是我自己的错。。。。引号的原因。
Scorip 2013-07-24
  • 打赏
  • 举报
回复
不过确实我把楼主的语句直接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
' ' 附近有语法错误。

找了半天反正没找到

*/

qingYun1029 2013-07-24
  • 打赏
  • 举报
回复
可是还是报错了。。我用sql server 08(r2)版本 主要是这个sql语句是传递给分页存储过程的参数,会不会有冲突呢??
Scorip 2013-07-24
  • 打赏
  • 举报
回复


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)


*/
没看出来哪里出错了。。
md5e 2013-07-24
  • 打赏
  • 举报
回复
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) 我想这样应该不会错吧

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧