SQLite:在计算中使用别名
可以在SQLite中的计算列中使用别名吗?我有以下疑问:SQLite:在计算中使用别名,sqlite,Sqlite,可以在SQLite中的计算列中使用别名吗?我有以下疑问: SELECT dpTicker AS Ticker, max(dpDate) AS Datum, dpClose AS Price, (SELECT sum(div) FROM Dividends WHERE divTicker = DP1.dpTicker AND strftime('%Y', divDate) = strftime('%Y'
SELECT
dpTicker AS Ticker,
max(dpDate) AS Datum,
dpClose AS Price,
(SELECT
sum(div)
FROM Dividends
WHERE
divTicker = DP1.dpTicker
AND strftime('%Y', divDate) = strftime('%Y', date('now','-1 Year')))
AS sumDiv,
(SELECT
sum(div)
FROM Dividends
WHERE
divTicker = DP1.dpTicker
AND strftime('%Y', divDate) = strftime('%Y', date('now','-1 Year')))/dpClose*100
AS divYield
FROM DailyPrices AS DP1
GROUP BY dpTicker
ORDER BY divYield DESC;
正如您在上面的查询中所注意到的,sumDiv的代码重复了两次。我一直在搜索如何在计算列中使用别名,但是,我的尝试没有结果
在计算中直接使用别名(sumDiv)会导致错误消息。我已经读到,将别名包装在SELECT语句周围应该可以:
(SELECT sumDiv)/dpClose AS divYield
此尝试会导致相同的错误:
bash-3.2$ sqlite3 myShares < Queries/test.sql
Error: near line 1: no such column: sumDiv
bash-3.2$sqlite3 myShares
可以在计算中使用别名,还是必须重复代码两次
提前感谢您的反馈,并帮助您逐步了解SQLite的学习过程
致以最良好的祝愿
GAMSQL标准规定别名在同一SELECT子句的其他部分不可见 计算机科学中的所有问题都可以通过另一个间接层次来解决。
-大卫惠勒 只需将计算移动到子查询中:
SELECT sumDiv,
sumDiv / dpClose AS divYield
FROM (SELECT (SELECT sum(div)
FROM Dividends
WHERE ...
) AS sumDiv,
...
FROM DailyPrices
...);