Использование точечной нотации с sum () для запроса одинаковых, но нескольких столбцов в нескольких базах данных - PullRequest
0 голосов
/ 17 октября 2018

SQLite

Существует несколько баз данных, по одной базе данных на каждый период времени (т. Е. Квартал).Заголовки столбцов в каждой таблице одинаковы.Некоторые из столбцов.Данные идентичны между базами данных (например, ID, имя, адрес, штат, веб-сайт и т. Д.).Некоторые столбцы, заголовок столбца одинаков, но данные в столбце отличаются между базами данных.Цель состоит в том, чтобы: выбрать несколько столбцов из нескольких баз данных, суммировать каждый столбец, преобразовать выходные данные из 000000000 в $ 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"

Однако, когда я пытаюсь включить точечную нотацию и добавить сумму (columnName) к запросу, это не удается.

select  AllReports19921231AssetsAndLiabilities.sum(dep)
From AllReports19921231AssetsAndLiabilities;

Я получаю эту ошибку:

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

Как правильно написать этот запрос?

Конечная цель - выбратьодни и те же столбцы (например, col1, col2, col3 и т. д.) из нескольких баз данных (Q1, Q2, Q3, Q4).Суммируйте каждый столбец, добавьте три ноля к выходным значениям, а затем преобразуйте из 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 голосов
/ 17 октября 2018

Научитесь использовать псевдонимы!

select sum(aal.dep)
From AllReports19921231AssetsAndLiabilities aal;

Запрос гораздо проще написать и прочитать.Псевдоним таблицы (будь то полное имя таблицы или сокращение) присоединяется к имени столбца.В SQL это приводит к квалифицированной ссылке на столбец .Квалификация указывает, из какой таблицы она исходит.

Псевдоним таблицы не привязан к функции, поскольку SQL в настоящее время не позволяет таблицам содержать функции.

0 голосов
/ 17 октября 2018

Ваш синтаксис неправильный:

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