SELECT top 10 *,
5 totalPaidTimes,
logID id,
sum(paidMoney) totalPaidMoney,
CONVERT(varchar(100), addTime, 120) addTimeFormat, --添加时间
CONVERT(varchar(100), addTime, 23) addTimeDay, --添加时间的年月日
CONVERT(varchar(100), addTime, 8) addTimeTime --添加时间的时分秒
from tblShopOrderPayLog where orderID =16 order by logID desc
在一个项目中,要输出订单支付记录列表,并计算订单总支付金额,运行上述sql语句提示:
消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 'tblShopOrderPayLog.logID' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
只要去掉sum就可以。
原因:应该是因为不能select *,sum(paidMoney)这么写。
如果改成每个字段都要包含在group by里,是没问题的:
select logID,orderID,sum(paidMoney) total from tblShopOrderPayLog where orderID =16 group by logID,orderID
但是输出的结果不是自己想要的。统计的是分组以后的结果,而不是全部。
logID orderID total
1 16 1.002 16 1.00
3 16 1.00
4 16 1.00
5 16 1.00
解决办法:
计算总价的sum单独用一条sql语句来获取 :
select sum(paidMoney) from tblShopOrderPayLog where orderID =16