Суммирование всех значений - / + из столбца за определенный год - PullRequest
0 голосов
/ 07 февраля 2019

Я присоединился к 2 таблицам.Одна таблица имеет все значения (+/- суммы), а другая имеет в основном данные измерений.После присоединения я хотел выполнить запрос на сумму всех отрицательных и положительных значений за определенный год.

Проблема, кажется, происходит в третьей строке.Есть мысли?

select sum(sales_amount)
from salesInfo s inner joint dimInfo d
where sales_amount <0 and year = '2019';

Запрос не генерируется из-за ошибки, выдаваемой в строке 3:

ошибка - ORA-00905: отсутствует ключевое слово 00905. 00000 - "отсутствуетКлючевое слово "

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Добавьте предложение ON после оператора JOIN, чтобы указать условие JOIN

SELECT sum(sales_amount)
FROM salesInfo s 
INNER JOIN dimInfo d
ON d.<column_name> = s.<column_name> 
WHERE sales_amount < 0 and year = '2019'
0 голосов
/ 07 февраля 2019

Вероятно, проблема связана с отсутствующим предложением ON, которое в Oracle SQL недопустимо для INNER JOIN, в отличие от других диалектов баз данных, в которых такое объединение эквивалентно перекрестному объединению.

В качестве альтернативы, вы можете использовать Oracle NATURAL JOIN для объединения именованных столбцов между таблицами:

from salesInfo s natural join dimInfo d

В любом случае, вы можете запустить условный агрегат и даже группу по год :

select year,
       sum(case when sales_amount < 0 then sales_amount end) as negative_sales,
       sum(case when sales_amount > 0 then sales_amount end) as positive_sales
from salesInfo s 
inner join dimInfo d on s.some_id = d.some_id
group by year

Rextester Demo

0 голосов
/ 07 февраля 2019

Просто используйте условную агрегацию:

select sum(case when sales_amount < 0 then sales_amount end) as neg_sum,
       sum(case when sales_amount > 0 then sales_amount end) as pos_sum          
from salesInfo s inner join
     dimInfo d
     on ? = ?  -- whatever your `JOIN` conditions are here
where year = 2019;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...