Ric*_*ron 3 sqlite join subquery
或者至少我认为它们被称为子查询(新手和SQLite中的自我训练).我SELECT在同一个数据库中有两个表的两个语句.我想沿着列date和这两个子查询加入symbol.子查询单独工作,但当我尝试JOIN我得到一个错误(error in statement: near "JOIN": syntax error).这是我的查询字符串:
SELECT date, symbol, SUM(oi*contract_settle) AS oi_dollar
FROM (SELECT date, symbol, oi, contract_settle
FROM ann
UNION
SELECT date, symbol, oi, contract_settle
FROM qtr)
GROUP BY date, symbol
HAVING oi_dollar > 0
JOIN
(SELECT date, symbol, ret FROM crsp
USING (date, symbol))
Run Code Online (Sandbox Code Playgroud)
谢谢!
And*_*rew 13
您的JOIN子句需要在GROUP BY子句之前.此外,我知道sqlite确实有一些不同的"可选"连接语法,但以下更标准的查询应该有效:
SELECT a.date, a.symbol, SUM(a.oi * a.contract_settle) AS oi_dollar
FROM (SELECT date, symbol, oi, contract_settle
FROM ann
UNION
SELECT date, symbol, oi, contract_settle
FROM qtr) a
INNER JOIN crsp c ON a.date = c.date AND a.symbol = c.symbol
WHERE a.oi * a.contract_settle > 0
GROUP BY a.date, a.symbol
Run Code Online (Sandbox Code Playgroud)
如果您对oi和contract_settle列有更多了解(例如,它们永远不会都是负数),则WHERE子句a.oi <> 0 AND a.contract_settle <> 0可能具有更好的性能.