2017-02-09 116 views
0

我有这样一个表: Table1 ,我需要一个列到表中添加的平均交货时间 avr_del_time column added 我的代码是:添加平均列到同一个表

SELECT a.vendor, a.part_nr, a.delivery_time, b.avr_del_time 
FROM Table1 a 
INNER JOIN (SELECT AVG(delivery_time) AS avr_del_time FROM Table1 GROUP BY vendor, part_nr) b 
ON a.vendor = b.vendor, a.part_nr=b.part_nr 

请指导我。 ..

回答

0

您需要返回联接字段在子查询或连接将无法工作

SELECT a.vendor, a.part_nr, a.delivery_time, b.avr_del_time 
FROM Table1 a 
INNER JOIN (SELECT Vendor, 
        part_nr, 
        AVG(delivery_time) AS avr_del_time 
      FROM Table1 
      GROUP BY vendor, part_nr) b 
ON a.vendor = b.vendor and a.part_nr=b.part_nr 
0

没有看到任何问题与您发布的代码,除了JOIN ON条件即应

ON a.vendor = b.vendor 
AND a.part_nr=b.part_nr // OR condition can as well be based on requirement 

而且因为它是一个计算值,在加单独的列到你的表是没有意义的,而有列在您的显示结果同时从表

1

您的查询是在正确的轨道上。你只需要修复了SQL错误:

SELECT a.vendor, a.part_nr, a.delivery_time, b.avr_del_time 
FROM Table1 as a INNER JOIN 
     (SELECT vendor, part_nr, AVG(delivery_time) AS avr_del_time 
     FROM Table1 
     GROUP BY vendor, part_nr 
    ) as b 
    ON a.vendor = b.vendor AND a.part_nr = b.part_nr; 

注:

  • GROUP BY子查询,则需要在SELECT键。
  • 您在ON条件中有一个逗号;它应该是AND
  • 我建议您使用表名称的缩写表别名。