2014-02-05 1 views
-1

У меня есть этот запрос:SQL запрос с внутренним соединением, агрегация и просуммировать

SELECT Projects.proj_num_of_vehicles AS VehicQuantity 
, customers.cust_country AS Country 
, Projects.proj_contract_value AS MarketValue 
, Projects.proj_date AS Year 

FROM 
    dbo.Projects 

    INNER JOIN dbo.Manufacturers 
    ON Projects.proj_man_id = Manufacturers.man_id 
    INNER JOIN dbo.customers 
    ON Projects.proj_cust_id = customers.cust_id 

ORDER BY 
    year DESC 

который возвращается мне эти данные:

enter image description here

Теперь мне нужно подвести вверх значения для каждой страны в год. Поэтому я должен получать каждую страну только один раз в год. Некоторая помощь будет оценена.

Осветление Т.е., ссылаясь на картинке выше для Германии, который появляется в 5 раз в 2013 году, мне нужен результат, показывающий одну строку «Транспорт Q.ty (сумма х 2013) -Страна (Германия) - Рыночная стоимость (сумма x 2013). Соединенные Штаты появляются 2 раза, но два разных года, затем 2 строки.

+3

улучшить ваше название – sumit

+0

Что вам нужно, чтобы узнать о: [группировка/агрегация] (http://technet.microsoft.com/en-us/library/ms173454.aspx), [дата/время манипуляции] (http://technet.microsoft.com/en-us/library/ms186724.aspx). –

ответ

4

Вы должны действительно прочитать об основах SQL, вместо того чтобы полагаться на людей в Интернете, чтобы решить ваши проблемы просто

Чтобы сказать, что вы хотите, вам нужно использовать предложение GROUP BY. Что-то вроде этого:

SELECT SUM(Projects.proj_num_of_vehicles) AS VehicQuantity 
, customers.cust_country AS Country 
, SUM(Projects.proj_contract_value) AS MarketValue 
, YEAR(Projects.proj_date) AS Year 

FROM 
    dbo.Projects 

    INNER JOIN dbo.Manufacturers 
    ON Projects.proj_man_id = Manufacturers.man_id 
    INNER JOIN dbo.customers 
    ON Projects.proj_cust_id = customers.cust_id 
GROUP BY 
    customers.cust_country, YEAR(Projects.proj_date) 
ORDER BY 
    year DESC 
+0

Спасибо за ваш комментарий, вы правы. Мне нужно учиться и переваривать эти вещи. Тем не менее, я не программист, и я самостоятельно учился, ни один из коллег, на которые я бы положился. Все еще не оправдание, но идет медленно. Я протестировал ваш запрос и все еще даю мне отдельные страны, которые не суммируются в том же году. http://s12.postimg.org/44vle4859/Schermata_2014_02_05_alle_12_49_16.png Мне нужно суммировать в год на страну. – FeliceM

+0

Я редактировал свое сообщение для учетной записи для группировки по годам. Я добавил функцию 'YEAR()' вокруг столбца 'proj_date' в' SELECT'-list, а также в 'GROUP BY'. – Dan

+0

Большое спасибо. Теперь он отлично работает. – FeliceM

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