我不确定如何表达我的问题。但是我有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的所有Id的总和。我现在的工作是显示所有Id,并且仅有多个值,并且将其单独细分。但是,我希望它浓缩。任何援助将不胜感激。如果我的代码中存在较小的拼写错误(这不是实际的代码,则只是将代码重命名为隐私原因,我需要逻辑上的帮助)。请,谢谢。