使用点表示法和sum()在多个数据库中查询相同但多个列的

时间:2018-10-17 19:03:41

标签: sql sqlite

SQLite

有多个数据库,每个时间段(即季度)一个数据库。每个表中的列标题都相同。一些专栏。数据库之间的数据是相同的(例如ID,名称,地址,州,网站等)。在某些列中,列标题相同,但 列中的数据在数据库之间是不同的。 目标是: 从多个数据库中选择多个列,对每个列求和,将输出从000000000转换为$ 000,000,000,000,在输出中添加三个零 (当前数据以000表示)。

以下是有效查询的迭代,以失败的查询结束。 从一个数据库中选择一列。该查询有效。

select  dep
From AllReports19921231AssetsAndLiabilities;

output
"11005"
"34396"
"42244"

向此相同查询添加sum(columnName)方法是可行的。

select  sum(dep)
From AllReports19921231AssetsAndLiabilities;

results: 3562807353

尝试从多个数据库中求和(columnName)会导致错误。

select  sum(dep)
From AllReports19921231AssetsAndLiabilities, 
AllReports19930331AssetsAndLiabilities;

error: 
ambiguous column name: dep: select  sum(dep)
From AllReports19921231AssetsAndLiabilities, 
AllReports19930331AssetsAndLiabilities;

使用点表示法将数据库附加到列。查询有效。

select  AllReports19921231AssetsAndLiabilities.dep
From AllReports19921231AssetsAndLiabilities;


Output: 
"11005"
"34396"
"42244"

但是,当我尝试包括点表示法并将sum(columnName)添加到查询中时,它将失败。

select  AllReports19921231AssetsAndLiabilities.sum(dep)
From AllReports19921231AssetsAndLiabilities;

我收到此错误:

near "(": syntax error: select  AllReports19921231AssetsAndLiabilities.sum(

编写此查询的正确方法是什么?

最终目标是从多个数据库(Q1,Q2,Q3,Q4)中选择相同的列(例如col1,col2,col3等)。 对每列求和,将三个零加到输出,然后从000000000转换为$ 000,000,000,000 注意:有103个数据库(即每个时间段/每个季度一个数据库)。

select  AllReports19921231AssetsAndLiabilities.sum(dep), 
AllReports19930331AssetsAndLiabilities.sum(dep), 
AllReports19930630AssetsAndLiabilities.sum(dep)

From AllReports19921231AssetsAndLiabilities, 
AllReports19930331AssetsAndLiabilities, 
AllReports19930630AssetsAndLiabilities;

上面的查询输出错误:

near "(": syntax error: select  AllReports19921231AssetsAndLiabilities.sum(

2 个答案:

答案 0 :(得分:1)

您的语法错误:

select  sum(AllReports19921231AssetsAndLiabilities.dep)
From AllReports19921231AssetsAndLiabilities

答案 1 :(得分:1)

学习使用别名!

os.environ['PATH'] = "/usr/local/cuda-9.0/bin${PATH:+:${PATH}}"
os.environ['LD_LIBRARY_PATH'] = "/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"

查询更容易编写和阅读。表别名(完整的表名或缩写)都附加在列名上。在SQL中,这会产生一个限定的列引用。限定条件指定它来自哪个表。

表别名未附加到函数,因为SQL当前不允许表包含函数。