Я не уверен, как сформулировать мой вопрос. Но у меня есть 2 разные таблицы, которые нужно объединить для получения результатов.
Table A
--------------------------
Id | Field_Id | Value
--------------------------
1234| 16 | PO456
1234| 7 | 40
1334| 16 | PO456
1334| 7 | 20
1246| 16 | PO679
1246| 7 | 100
1247| 16 | PO679
1247| 7 | 20
1247| 16 | PO679
1247| 7 | 40
Table B
--------------
Id | Hours |
--------------
1234| 2
1234| 3
1234| 4
1234| 5
1334| 8
1334| 8
1334| 8
1246| 3
1246| 3
1247| 8
1247| 8
Теперь требуемый результат должен выглядеть следующим образом.
Result
-----------------------
Value | Est | Hours
-----------------------
PO456 | 60 | 38
PO679 | 160| 22
Вот мой sql:
select a.value as "Id", CAST(sum(d.value) AS Decimal(10,2)) as 'Est'
, COALESCE(sum(b.Hours),0) as "Hours"
from table_a a
left Join table_b b ON a.Id = b.Id
inner join table_a d ON d.Id = a.Id AND d.Field_Id = '7'
where a.Field_Id = '16' and a.value <> ' '
Group By a.value
ORDER BY a.value ASC
Теперь мой столбец часов отображается правильно, однако это столбец Est, который возвращает странные данные, как будто числа исчисляются тысячами. Не связано ли это как-то с первой колонкой? Я в основном хочу получить сумму всех идентификаторов с тем же значением a.value на одной строке. Моя работа сейчас заключается в том, что он отображает все идентификаторы, и есть просто несколько значений, и он разбивается по отдельности. Тем не менее, я хочу, чтобы это сжато. Любая помощь будет оценена. Если в моем коде есть незначительные орфографические ошибки (это не настоящий код, код просто переименован из соображений конфиденциальности, мне нужна помощь по логике). Пожалуйста и спасибо.