我的挑战如下:我有一个非常简单的SQL查询,它从两个不同的表中获取值,包括SUM值。
表1(treatments
)如下:
MedicineDescription | InitAmount | Cost
Mybulen | 90 | 194
表2(treatmentrecords
)如下:
Treatment | AmountGiven
Mybulen | 60
我的SQL查询:
SELECT t.MedicineDescription
, SUM(t.initAMount) startAmount
, SUM(r.AmountGiven) endAmount
, SUM(t.Cost) tCost
FROM treatments t
LEFT
JOIN treatmentrecords r
ON r.Treatment = t.MedicineDescription
GROUP
BY MedicineDescription
最后......结果:
MedicineDescription | StartAmount | EndAmount | tCost
Mybulen | 90 | 180.00 | 194
正如您所看到的,启动量和tcost都是完美计算的,问题只是为EndAmount返回的SUM不正确。
任何想法都将受到赞赏!
答案 0 :(得分:0)
您的查询问题出在Group
子句中,您根据第一个表中的字段进行分组。因此,您没有第二个表所需的结果。试试这个查询
SELECT t.MedicineDescription
, SUM(t.initAMount) startAmount
, r.sumAmountGiven endAmount
, SUM(t.Cost) tCost
FROM treatments t
INNER JOIN (
SELECT Treatment
, SUM(AmountGiven) AS sumAmountGiven
FROM treatmentrecords
GROUP BY Treatment
) AS r ON r.Treatment = t.MedicineDescription
GROUP BY MedicineDescription
这里我添加了一个子查询,我将其命名为r
以跟随您的旧名称。此查询返回一个关系,该关系包含treatment
列和sum(AmountGiven)
两列。此处的总和根据treatment
列进行分组。之后,连接将sum列添加到主查询。