欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

一个group by的有关问题

更新时间: 2014-01-05 02:17:12 责任编辑: Author_N1

 

一个group by的问题

InSt_Amt=(select isnull(sum(x.Fc_tot), 0)
                        from StInPoOrdD x
                          inner join PoOrdD o on x.OrderD_Id = o.OrderD_Id where o.OrderM_Id = b.OrderM_Id)

如代码所示,我在存储过程中将此列查出,插入临时表,而且内表中也有聚合函数SUM,按理说应该不需要Group by,存储过程建立也是正确的,但是我只要一输入参数进行查询,就会报这个错:选择列表中的列 'StInPoOrdD.Fc_Tot' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
请问这是为什么?内表中的列外表是无法访问的,所以也没有办法进行GROUP BY,求大神指教
--参考方法--

InSt_Amt=(select isnull(sum(x.Fc_tot), 0)  as Fc_tot
                        from StInPoOrdD x
                          inner join PoOrdD o on x.OrderD_Id = o.OrderD_Id where o.OrderM_Id = b.OrderM_Id)

--参考方法--

InSt_Amt=(select isnull(sum(x.Fc_tot), 0)
                        from StInPoOrdD x
                          inner join PoOrdD o on x.OrderD_Id = o.OrderD_Id where o.OrderM_Id = b.OrderM_Id)


这个应该是一个子查询,这个别名 b是从哪儿来的 b.OrderM_Id
--参考方法--
1.把你里头的 “isnull(sum(x.Fc_tot), 0)” 这个列值,重新命名一个别名,就可以了。
2.如果你select语句中查询只有聚合函数,没有其他列的话,不用group  by,如果除了聚合函数,还有其他列,就要group by 了。
--参考方法--
你那个报错通常是select/order by /having里面用到了一些没有在聚合函数中的列,把完整的语句贴出来看看
--参考方法--
引用:
Quote: 引用:

要加入别名,不然列名为null

求教版主大大,那“InSt_Amt=”不算是指定了列的名吗?或者说你的意思是,那个子查询里面是没有列名的
结果集里面要指定,就想:
select *
from (xxxx)
这个会报错的,因为from它不直达括号里面的是一个什么东西
--参考方法--
顶,我保证楼主会结贴的~
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:12
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7988/
本文WWW.DOC100.NET DOC100.NET版权所有。