2013-08-21 49 views
1
select PO_Order_Qty, Avg([PO_Order_Qty])as totalAverage 
FROM [FirstStrike_Retail].[custom].[Whse_Pricing_QR]  
where item_code ='111' and PO_order_qty <(Avg([PO_Order_Qty])*2) 
group by PO_Order_Qty 

我在MS Sql中使用上述sql来获取特定项目代码顺序数量的平均值。我期待只有一个返回值。在where子句和不同的列条件中使用聚合函数

而且我需要消除,如果任何数量超过平均水平的两倍。

感谢 Xplr

+0

而且你的问题是什么? – peterm

+0

当我运行这个sql时出现错误。我只需要在2个标准中找到一列的平均值(a)我想为特定物品代码挑选行,(b)po订单数量应该小于平均值的两倍 – priya

回答

1

您应该使用检查都汇集功能(MAX,MIN,SUM,AVG等)时,HAVING子句。我不想给你答案,但尝试这样的事情。

select PO_Order_Qty, Avg([PO_Order_Qty])as totalAverage 
FROM [FirstStrike_Retail].[custom].[Whse_Pricing_QR]  
where item_code ='111' 
group by PO_Order_Qty 
HAVING PO_order_qty <(Avg([PO_Order_Qty])*2) 

编辑:试试这个基础上你的评论是这样的

select * 
    FROM [FirstStrike_Retail].[custom].[Whse_Pricing_QR]  
    where item_code ='111' 
     and PO_Order_Qty < 
      (select Avg([PO_Order_Qty])as totalAverage 
      FROM [FirstStrike_Retail].[custom].[Whse_Pricing_QR]) * 2 
+0

这会给我多个。我只想要整个列表的一个平均返回值。 – priya

+0

我编辑了答案...请现在检查。 –

+0

通过将平均值([PO_Order_Qty])替换为总平均值,我得到了一个返回值。并得到答案。谢谢 – priya