一个group by的问题InSt_Amt(select isnull(sum(x.Fc_tot), 0)from StInPoOrdD xinner join PoOrdD o on
一个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里面用到了一些没有在聚合函数中的列,把完整的语句贴出来看看 [解决办法] 结果集里面要指定,就想: select * from (xxxx) 这个会报错的,因为from它不直达括号里面的是一个什么东西 [解决办法] 顶,我保证楼主会结贴的~