我的问题是在derived_daily 表(从源表prices_daily 派生)中填充我的最后两列。
(源表)prices_daily:
sequence INT(11) NO PRI AUTO_INCREMENT
symbol VARCHAR(6) NO MUL
date DATE NO MUL
high DECIMAL(8,2) YES
low DECIMAL(8,2) YES
close_adj DECIMAL(8,2) YES
(目标表)derived_daily:
symbol VARCHAR(6) YES
date DATE NO
mov_avg10 DECIMAL(8,2) YES
std_dev10 DECIMAL(8,2) YES
range_daily DECIMAL(8,2) YES
range_std_dev30 DECIMAL(8,2) YES
我可以使用以下代码填充前 4 列:
INSERT INTO derived_daily(symbol, date, mov_avg10, std_dev10)
(
SELECT t1.symbol, t1.date, AVG(t2.close_adj) AS mov_avg10, STDDEV(t2.close_adj)
AS std_dev10
FROM prices_daily t1 LEFT OUTER JOIN prices_daily t2
ON t2.symbol = t1.symbol AND (t1.sequence - t2.sequence)BETWEEN 0 AND 9
WHERE t1.symbol = 'C' GROUP BY t1.date
) ;
但是当我尝试在派生表中填充“range_daily”时:
INSERT INTO derived_daily(symbol, date, range_daily)
(
SELECT t2.symbol, t2.date, (high - low) AS range_daily
FROM prices_daily t1
LEFT OUTER JOIN derived_daily t2
ON t2.symbol = t1.symbol AND t2.date = t1.date
WHERE t2.symbol = 'C'
ORDER BY t2.date
) ;
它将它放在正确的列中,但在新行的表底部,而不是带有缺失数据的现有行(range_daily 和最终,range_std_dev30)。我已经尝试了许多调整,并且大部分都得到“错误1364,字段'日期'没有默认值。我想填充最后两列以匹配我已经放置在表中的内容(相同行),而不是底部的新行。
我花了很长时间查看相关的问题/答案,但仍然无法与我的问题相关(菜鸟......道歉)。任何帮助/建议/等。将不胜感激!PS正在适当地格式化问题,但不得不来到主要位置(这个网站是顶部),因为我很沮丧哈哈。
谢谢,汤姆