2017-02-09 7 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.
  • Я бы предположил, что вы используете псевдонимы таблиц, которые являются аббревиатурами для имен таблиц.

 Смежные вопросы

  • Нет связанных вопросов^_^