我使用下面的insert查询来创建两个表之间的比较,使用要连接的日期。
INSERT INTO Comp_Table (Date, CKROne, CKRTwo, ChangeOne, ChangeTwo, State)
SELECT BaseTbl.Date, BaseTbl.CKR, CompTbl.CKR, BaseTbl.Change, CompTbl.Change,
CASE
WHEN BaseTbl.Change > 0 AND CompTbl.Change > 0 THEN 'positive'
WHEN BaseTbl.Change < 0 AND CompTbl.Change < 0 THEN 'positive'
ELSE 'inversely'
END AS 'Correlation'
FROM BaseTbl
JOIN CompTbl ON BaseTbl.Date = CompTbl.Date;这个效果很好。然而,我希望能够以一种滞后的方式加入这些席位。如前所述,用户可以定义是要在日期上进行精确匹配,还是要使用一个发生日期加上一个数字,并返回后一个日期的值,以便与前一个日期进行比较。伪代码示例:
用户设置变量=0
Join ComTbl On BaseTbl.Date = CompTbl.Date + 0;用户设置变量=7
Join CompTbl On BaseTbl.Date = CompTbl.Date + 7;
(joins 2012-01-01 from BaseTbl to 2012-01-08 from CompTbl)我试着在Where子句('+7天‘)中添加几天,但这是行不通的。我还尝试在BaseTbl.Date = CompTbl.Date '+ 7 day'中使用Where子句,但这也返回了一个0值。如何在SQLite中实现这一点?
发布于 2017-01-24 04:15:50
我认为您可以使用DATE()函数构建所需的WHERE子句:
INSERT INTO ...
SELECT ...
FROM BaseTbl
INNER JOIN ComTbl
ON BaseTbl.Date = DATE(CompTbl.Date, '7 days')https://stackoverflow.com/questions/41819831
复制相似问题