2014-11-07 3 views
0

Моих студентов таблицы имеет следующие таблицыДобавление несколько количества записей в таблицу

student id | student year | test result | semester 

Я хотел бы сгруппировать записи вместе, чтобы узнать, сколько повторных испытания были студент делать в конкретном семестре.

Я пытаюсь изменить таблицу и добавить total_tests_taken столбец таблицы и использовать выписку обновления как:

ALTER table students 
(add total_tests_taken number); 

UPDATE students 
SET total_tests_taken = (select count(*) OVER (PARTITION BY student_id, semester) FROM students) 

но мой SQL терпит неудачу, говоря: "ORA-01427: single-row subquery returns more than one row"

, что я делаю неправильно ?

Нужно ли создавать временную таблицу и чем это делать?

Благодаря

ответ

0

причины вы получаете ошибку, потому что вы пытаетесь установить значение столбца = таблицу. SET будет обновлять каждую строку, которая соответствует ограничению с заданным значением. То, что вы пытаетесь сделать, может быть выполнено UPDATE с помощью инструкции JOIN, если ваша СУБД поддерживает ее. Вы можете проверить ответ на этот вопрос для синтаксиса

How can I do an UPDATE statement with JOIN in SQL?

+0

Могу ли я присоединиться к столу с самим собой? Есть только 1 таблица, с которой я работаю. Кроме того, мне нужно подсчитать, сколько записей существует для студенческой комбинации Id/Semester, так что мне действительно нужен счет или над/раздел –

+0

@MysimpleNae, вы можете обязательно присоединиться к самому себе. – Steve

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