Самостоятельно присоединяйтесь, чтобы показать результаты за два года

0

Привет, у меня есть одна таблица, которая включает в себя расходы на 2016 и 2017 годы.

мой код

    select 
    sum(a.cost),a.AGENCYNAME,b.AGENCYNAME,sum(b.cost) from table as a
    where a.projectyear = 2016 and b.projectyear = 2017
    join table as b on a.USERID = b.USERID

Но я не могу получить ответ.

  • 0
    WHERE идет после JOIN's
  • 0
    Почему вы хотите использовать объединение, а не объединение двух результатов?
Показать ещё 2 комментария
Теги:

3 ответа

1
Лучший ответ

Если я правильно понимаю ваш вопрос, я думаю, что то, что вы пытаетесь сделать, довольно просто и может быть достигнуто с помощью оператора CASE. Я просто не совсем уверен, куда в нее входит USERID.

CREATE TABLE #table(
   [userid] char(1),
   [agencyname] varchar(255),
   [projectyear] int,
   [cost] int
);
INSERT INTO #table VALUES
('A','Agency 1',2016,10),
('A','Agency 1',2016,20),
('A','Agency 1',2017,30),
('A','Agency 1',2017,40),
('A','Agency 2',2016,100),
('A','Agency 2',2016,200),
('A','Agency 2',2017,300),
('A','Agency 2',2017,400);

SELECT
       agencyname,
       SUM(CASE WHEN projectyear= 2016 THEN cost END) as 'cost 2016',
       SUM(CASE WHEN projectyear= 2017 THEN cost END) as 'cost 2017'
FROM #table
GROUP BY agencyname

DROP TABLE #table
1

Может быть, потому, что я не понял этот вопрос четко, не мог решить, зачем нам здесь присоединиться. Не могли бы вы попробовать:

select a.AGENCYNAME, a.projectyear, sum(a.cost) as TotalCost
from table a
where a.projectyear in (2016,2017)
group by a.AGENCYNAME,a.projectyear
  • 0
    Привет, Эрай, я пытался, но только дал мне два столбца, которые сумма сумма и название агентства. Нет выхода года.
  • 0
    Это должно дать вам 3 столбца, поскольку в предложении select указано 3 столбца: agencyname, projectyear. Общая стоимость ?
Показать ещё 1 комментарий
0

Вы вступаете в неправильную позицию, но вы должны добавить соответствующую группу

select 
sum(a.cost)
,a.AGENCYNAME
,b.AGENCYNAME
,sum(b.cost) from table as a
INNER join table as b on a.USERID = b.USERID
where a.projectyear = 2016 and b.projectyear = 2017
group by a.AGENCYNAME ,b.AGENCYNAME

Ещё вопросы

Сообщество Overcoder
Наверх
Меню