у меня 3 стола
bl_main (bl_id UNIQUE, bl_area)
bl_details (bl_id UNIQUE, name)
bl_data(bl_id, month, paper_tons, bottles_tons)
bl_id
не является уникальным в последней таблице. Там будет несколько строк одного и того же bl_id
.
Я пытаюсь получить данные следующим образом
bl_id | name | bl_area | sum(paper_tons) | sum (bottles_tons) | paper_tons | bottles_tons
sum(paper_tons)
должен вернуть сумму всех бумажных тонн за тот же bl_id
, что и январь-декабрь.
Используя приведенный ниже запрос, я могу корректно получить все данные, за исключением того, что в результате есть несколько случаев bl_ids(From bl_data table)
.
SELECT bl_main.bl_id,name,bl_area,sums.SummedPaper, sums.SummedBottles,paper_tons,bottles_tons
FROM bl_main
JOIN bl_details ON
bl_main.bl_id= bl_details.bl_id
left outer JOIN bl_data ON
bl_data.bl_id= bl_main.bl_id
left outer JOIN (
SELECT bl_id, SUM(Paper_tons) As SummedPaper, SUM(bottle_tons) As SummedBottles
FROM bl_data
GROUP by bl_id) суммы ВКЛ sums.bl_id = bl_main.bl_id
Я хочу получить только уникальные значения bl_ids без повторов, и он должен содержать bl_id с максимальным месяцем, а не все месяцы для одного и того же bl_id.
Например:
INCORRECT
**0601** University Hall 75.76 17051 1356 4040 1154 **11**
**0601** University Hall 75.76 17051 1356 9190 101 **12**
**0605** UIC Student 22.86 3331 14799 0 356 **8**
CORRECT
**0601** University Hall 75.76 17051 1356 9190 101 **12**
**0605** UIC Student 22.86 3331 14799 0 356 **8**
Я знаю, что могу получить максимальное значение, используя
WHERE Month = (SELECT MAX(Month)
но где именно я должен добавить это в запрос и должен ли я изменить определение соединения.
Любая помощь высоко ценится, как я новичок в SQL. Заранее спасибо.