一个非常奇怪的问题,能告诉我为什么?

small_wei 2003-08-20 01:37:19
select (select top 1 field_6 from usertabb005 where field_5='aaa' and field_2=left(t1.field_2,5)) from usertabb005 t1 group by left(t1.field_2,5)
这样的语句是没有问题的,
但是
select (select sum(field_6) from usertabb005 where field_5='aaa' and field_2=left(t1.field_2,5)) from usertabb005 t1 group by left(t1.field_2,5)
就会报错,为什么?
服务器: 消息 8624,级别 16,状态 21,行 1
内部 SQL Server 错误。
...全文
29 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
small_wei 2003-08-21
  • 打赏
  • 举报
回复
up
CrazyFor 2003-08-20
  • 打赏
  • 举报
回复
你的field_6是不是数值型的数据,逻辑看不出什么问题.
pengdali 2003-08-20
  • 打赏
  • 举报
回复
select (select sum(field_6) from usertabb005 where field_5='aaa' and field_2=left(t1.field_2,5)) from (select distinct left(field_2,5) field_2 from usertabb005) t1
pengdali 2003-08-20
  • 打赏
  • 举报
回复
select (select sum(field_6) from usertabb005 where field_5='aaa' and field_2=left(t1.field_2,5))
from (select distinct left(field_2,5) field_2 from usertabb005) t1
hjb111 2003-08-20
  • 打赏
  • 举报
回复
select (select sum(field_6) from usertabb005 where field_5='aaa' and field_2=left(t1.field_2,5)) from usertabb005 t1 group by left(t1.field_2,5)

问题主要出在group by left(t1.field_2,5)上面.这样分组sum(field_6)不一定只能产生一列,所以多种不同的列被left(t1.field_2,5)分组肯定有问题!
txlicenhe 2003-08-20
  • 打赏
  • 举报
回复
只能是:
select (select top 1 field_6 from usertabb005 where field_5='aaa' and field_2=left(t1.field_2,5)) from usertabb005 t1 group by left(t1.field_2,5)
or:
select (select sum(field_6) from usertabb005 where field_5='aaa' and field_2=left(t1.field_2,5)) from usertabb005 t1
amtyuranus 2003-08-20
  • 打赏
  • 举报
回复
select 加select 会没问题
small_wei 2003-08-20
  • 打赏
  • 举报
回复
谢谢楼上的各位。
pengdali(大力 V2.0)的方法不错。
to CrazyFor(太阳下山明朝依旧爬上来)
field_6 是数值型的数据
我这样做也没有问题:
select (select sum(field_6) from usertabb005 where field_5='aaa' and field_2=t1.field_2) from (select left(field_2,5) as field_2 from usertabb005 group by left(field_2,5)) t1
这样也没有问题,我只是想知道为什么这样就会问题?
select (select sum(field_6) from usertabb005 where field_5='aaa' and field_2=left(t1.field_2,5)) from usertabb005 t1 group by left(t1.field_2,5)
就会报错,为什么?
服务器: 消息 8624,级别 16,状态 21,行 1
内部 SQL Server 错误。

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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