SQLite: различия guish между псевдонимом таблицы и столбца - PullRequest
1 голос
/ 05 февраля 2020

Может ли SQLite различать guish между столбцом некоторой псевдонимной таблицы, например, table1.column, и столбцом с псевдонимом с тем же именем, например column, в операторе SELECT?

Это важно, потому что мне нужно сослаться на столбец, который я строю в инструкции SELECT позже в предложении HAVING, но не должен путать его со столбцом в таблице с псевдонимами. Насколько мне известно, я не могу создать псевдоним таблицы, которая будет построена в моем операторе SELECT (не возвращаясь к некоторому неприятному обходному пути, например SELECT * FROM (SELECT ...) AS alias), чтобы убедиться, что оба они различимы.

Вот урезанная версия код, который меня интересует:

SELECT 
    a.entity, 
    b.DATE, 
    TOTAL(a.dollar_amount*b.ret_usd)/TOTAL(a.dollar_amount) AS ret_usd
FROM holdings a 
LEFT JOIN returns b 
    ON a.stock = b.stock AND
    a.DATE = b.DATE
GROUP BY 
    a.entity, 
    b.DATE 
HAVING 
    ret_usd NOT NULL

По сути, я хочу избавиться от групп, для которых я не могу найти никаких возвратов и, таким образом, появится со значениями NULL. Я не использую INNER JOIN, потому что в моем производственном коде я объединяю несколько типов возвратов - по некоторым из которых у меня может не быть данных. Я хочу удалить только те группы, для которых у меня нет возвратов ни для одного из типов возвращаемых данных.

Насколько я понимаю, документация SQLite не решает эту проблему.

1 Ответ

0 голосов
/ 05 февраля 2020

LEFT СОЕДИНИТЕ все таблицы возврата, затем добавьте WHERE что-то вроде

COALESCE(b.ret_used, c.ret_used, d.ret_used....) is not NULL

Возможно, вам понадобится аналогичная стратегия, чтобы определить, какой ret_used в ИТОГО. К вашему сведению, TOTAL никогда не возвращает NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...