如何逐个解决错误

时间:2013-10-21 05:40:45

标签: sql sql-server

任何人都可以指出我在哪里搞乱下面的查询以及如何纠正它。

我得到的错误是:

SQL Server数据库错误:列“A.competitor_id”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 第1行第0列

SELECT A.competitor_id, A.Competitor_Name,    

(((AVG(A.Final_Price_Shipping)/AVG(D.Final_Price_Shipping))*100)-100) as [Final Price Shipping Index],                  
  (((AVG(A.Final_Price)/AVG(D.Final_Price))*100)-100) as [Final Price Index],                   
  (((AVG(A.Regular_price)/AVG(D.Regular_price))*100)-100) as [Regular Price Index]                  

from 


(SELECT A.competitor_id,C.Competitor_Name, COUNT(1) OVER (PARTITION BY  A.competitor_id) as Row_Count,
avg(Final_Price) Final_Price,avg(Final_Price_Shipping) Final_Price_Shipping,
avg(Regular_price) as Regular_price  ,SUM(A.Competitor_id) as cnt_NL
from [Tb_Competitor_Product_Info_New] A with (nolock)
inner join Tb_Competitor C on C.Competitor_Id=A.Competitor_ID
 where A.Competitor_id in (1)
  group by A.Competitor_ID,C.Competitor_Name) As A,




  (SELECT A.competitor_id, COUNT(1) OVER (PARTITION BY  A.competitor_id) as Row_Count,
avg(Final_Price) Final_Price,avg(Final_Price_Shipping) Final_Price_Shipping,
avg(Regular_price) as Regular_price  ,SUM(A.Competitor_id) as cnt_NL
from [Tb_Competitor_Product_Info_New] A with (nolock)
 where A.Competitor_id in (2,3,4,5,6,7,8,9)
  group by A.Competitor_ID ) As D 

1 个答案:

答案 0 :(得分:1)

只需将GROUP BY添加到查询的末尾,我猜你的A和D表也必须加入:

SELECT A.competitor_id, A.Competitor_Name,    

(((AVG(A.Final_Price_Shipping)/AVG(D.Final_Price_Shipping))*100)-100) 
    as [Final Price Shipping Index],                  
(((AVG(A.Final_Price)/AVG(D.Final_Price))*100)-100) as [Final Price Index],                   
(((AVG(A.Regular_price)/AVG(D.Regular_price))*100)-100) 
    as [Regular Price Index]                  

from 
(.....) As A
INNER JOIN (.....) As D on A.competitor_id=D.competitor_id

GROUP BY A.competitor_id, A.Competitor_Name