Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite:区分表别名和列别名_Sql_Sqlite - Fatal编程技术网

SQLite:区分表别名和列别名

SQLite:区分表别名和列别名,sql,sqlite,Sql,Sqlite,SQLite能否在SELECT语句中区分具有别名的列(例如table1.column)和具有相同名称别名的列(例如column) 这是相关的,因为我需要引用稍后在HAVING子句的SELECT语句中构造的列,但不能将其与别名表中的列混淆。据我所知,我无法在SELECT语句中为要构造的表添加别名,而不返回到一些讨厌的工作,如SELECT*FROM SELECT。。。作为别名,以确保两者可区分 下面是我关注的代码的精简版本: SELECT a.entity, b.DATE,

SQLite能否在SELECT语句中区分具有别名的列(例如table1.column)和具有相同名称别名的列(例如column)

这是相关的,因为我需要引用稍后在HAVING子句的SELECT语句中构造的列,但不能将其与别名表中的列混淆。据我所知,我无法在SELECT语句中为要构造的表添加别名,而不返回到一些讨厌的工作,如SELECT*FROM SELECT。。。作为别名,以确保两者可区分

下面是我关注的代码的精简版本:

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
本质上,我想摆脱那些我找不到任何回报的组,因此会显示为空值。我没有使用内部联接,因为在我的生产代码中,我合并了多种类型的返回,其中一些可能没有数据。我只想删除那些我没有任何返回类型返回的组


据我所知,SQLite文档并没有解决这个问题。

左键连接所有返回表,然后添加一个WHERE

联合使用B.ret_,c.ret_,d.ret_。。。。不为空


您可能需要一个类似的策略来确定在总数中使用了哪个ret_。仅供参考,TOTAL从不返回NULL。

左键连接所有返回表,然后添加一个WHERE

联合使用B.ret_,c.ret_,d.ret_。。。。不为空


您可能需要一个类似的策略来确定在总数中使用了哪个ret_。仅供参考,TOTAL从不返回NULL。

无论如何,不能在having子句中使用列别名-使用整个表达式,使TOTALa.dollar\u amount*b.ret\u usd不为NULL。如果我将此聚合再次放入having子句中,它是否不会执行两次,这将对性能造成严重影响?除此之外,MySQL和a似乎表明SQLite也是如此。但是,我无法验证文档中的引用。它应该只执行一次-SQL引擎应该理解这一点。你可以测试一下,是吗?嗯,我不知道MySQL的非标准方式:我会使用不同的别名-但这当然不能回答你的问题。无论如何,你不能在having子句中使用列别名-使用整个表达式,使TOTALa.dollar_amount*b.ret_usd不为NULL。如果我将此聚合再次放入having子句中,它不会执行两次,哪一个对性能很糟糕?除此之外,MySQL和a似乎表明SQLite也是如此。但是,我无法验证文档中的引用。它应该只执行一次-SQL引擎应该理解这一点。你可以测试一下,是吗?嗯,我不知道MySQL的非标准方式:然后我会使用不同的别名——但这当然不能回答您的问题。