2009-08-26 2 views
0

Я пытаюсь запустить запрос, показанный ниже, чтобы включить результаты в отчет, и я получаю ошибку Operand should contain 1 column # 1241. Я не смог понять причину этого. Если я запускаю эту часть сама по себе я не получаю ошибки: (pct_return_1 * .25) + (pct_return_2 * .25) + (pct_return_3 * .15) + (pct_return_4 * .15) + (pct_return_5 * .2)mySQL Операнд должен содержать 1 ошибку столбца

Вот код:

DROP TABLE IF EXISTS temp_5; 
CREATE TABLE temp_5 (
    date_value date default NULL, 
    pct_return_portfolio double default NULL, 
    pct_return_benchmark double default NULL); 

INSERT INTO temp_5 (date_value, pct_return_portfolio, pct_return_benchmark) 
SELECT 
(date_value, 
    (pct_return_1 * .25) + 
    (pct_return_2 * .25) + 
    (pct_return_3 * .15) + 
    (pct_return_4 * .15) + 
    (pct_return_5 * .2) 
    FROM Temp_4), 
pct_return_6) 
FROM temp_4; 

ответ

0

Попробуйте удалить первое вхождение FROM Temp_4 (один раз после второго значения в подзапрос) ,

Edit: Также двойные группировки проверка скобок, как в этом примере:

INSERT INTO table2 (field1, field2, field3, field4) (SELECT 'value1 from user input', field1, field2, field3 from table1) 

который дается на этой странице относительно вставки подзапросов: http://dev.mysql.com/doc/refman/5.1/en/subqueries.html

+0

Я попробовал ваше предложение, и ниже мой фактический запрос. Запрос не запускался успешно. Я получил такое же сообщение об ошибке. INSERT INTO temp_5 (date_value, pct_return_portfolio, pct_return_benchmark) ВЫБОР (date_value, ( (pct_return_1 * .25) + (pct_return_2 * .25) + (pct_return_3 * .15) + (pct_return_4 * .15) + (pct_return_5 * .2) ), \t pct_return_6) FROM temp_4; – user163129

+0

В приведенном примере оператор select или подзапрос полностью заключен в круглые скобки. Поэтому в своем заявлении поместите открытую круглую скобку перед «SELECT», а другую после «FROM temp_4», надеюсь, это сработает для вас. Подзапросы придирчивы! – JYelton

0

Использование:

INSERT INTO temp_5 
    (date_value, pct_return_portfolio, pct_return_benchmark) 
SELECT date_value, 
     pct_return_1 * .25 + pct_return_2 * .25 + pct_return_3 * .15 + pct_return_4 * .15 + pct_return_5 * .2, 
     pct_return_6 
    FROM temp_4; 

Математический порядок операций гарантирует, что скобки/скобки не нужны.

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