2016-05-10 3 views
0

Добрый день,SQL для объединения и отображения итоговых данных

Я пытаюсь создать небольшую таблицу, которая суммирует некоторые цифры по отношению к отрасли.

Что мне нужно сделать, это объединить несколько строк в один. Значения числа представляют количество проектов в каждой отрасли. Две таблицы соединяются через Expense Cat ID в подвыборках.

Пример подзапрос:

,(SELECT COUNT (*) FROM [projects] 
    left join [territory] 
    on projects.territoryid = territory.territoryid 
    WHERE expense_category.expensecategoryid = projects.expense_category 
    AND projects.status = 'Live' 
) AS [Live Projects] 

так, что я пытаюсь достичь является комбинацией строк, где название категории расходов идентично затем объединить строки.

В двух словах:

CREATE view [dbo].[Industry_Projects_figures] as 
WITH [top25_industries] as (
SELECT expense_cat 
    ,(Select COUNT(projectid) from project_table 
where project = live) as [Live projects] 
    ,(Select COUNT(projectid) from project_table 
where project = live) as [Cancelled Projects] 
    ,(Select COUNT(projectid) from project_table 
where project = live) as [Completed] 
From industry_table 
GROUP BY expense_cat 
) 
select TOP 25 [top25_industries].*, 
    [Live Projects] + [Cancelled] + [Completed] as [Grand Total] 
    FROM [top25_industries] 
    ORDER BY [Grand Total] DESC 

Заканчивается производства:

Industry: 
Utilities & Energy 19 143 117 451  
Utilities & Energy 172 69 98 339   
Utilities & Energy 43 21 23 87 

Каждая строка представляет родительские и два дочерних подотраслей! Поэтому мне нужно, чтобы объединить их :(

+0

Ваш SQL должен выдавать ошибку только потому, что вы не можете дважды поставить ключевое слово SELECT («SELECT TOP 1000 SELECT ...») – Smandoli

+0

У меня ошибка, я просто написал это как пример! – Justin

+0

Примеры, которые могут быть проверены. http://stackoverflow.com/help/mcve – Smandoli

ответ

0

Я понял это сегодня!

Что я делаю неправильно был мой второй выбор, я должен был группируя по expense_cat, вы можете видеть из моего код выше Я выбрал * из таблицы temp, я просто выбираю «Кошелек расходов» и сгруппирован по нему. Теперь таблица выглядит намного лучше.

Также у меня были счетчики кошек, где имена были похожи, но не то же самое, E.G Other - Bacon, Other - Baconz, Other - MOAR Bacons).

Все, что мне нужно сделать, это установить предложение CASE WHEN в моем первом выборе, чтобы отфильтровать любые расходы_cats, где имя было LIKE 'other%' THEN 'Other', которое позволяет моему второму выбрать группировать их все вместе! :)

0

Выберите сумму (аннулированы) над (раздел по expense_cat) + сумма (завершено) над (раздел по expense_cat) из top25_industries

Если столбец expense_Cat является «Утилиты & колонка Energy», он должен подвести итог отмененные и завершенные итоги для каждой отрасли.

+0

Привет, Шилпа, разве это не так, как делать GROUP BY ROLLUP? – Justin

Смежные вопросы