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它不直达括号里面的是一个什么东西 ------解决方案-------------------- 顶,我保证楼主会结贴的~