我有2张表,一张包含我所有的日记行(表名:BoekstukRegels),另一张包含所有日记描述(表名:balansen)。
这很好用:
SELECT SUM(BoekRegelBedrag) AS TOTAL, BoekRegelGrootboekNr, BoekRegelPeriode
FROM BoekstukRegels
WHERE BoekregelUserId = 45 AND BoekRegelPeriode LIKE '2012%'
GROUP BY BoekRegelGrootboekNr
但问题是我没有得到描述。所以我尝试了这个:
SELECT SUM(BoekRegelBedrag) as total, BoekRegelPeriode, BoekRegelGrootboekNr, BaOmschrijving, BaSoort
FROM BoekstukRegels
LEFT JOIN balansen ON BoekRegelGrootboekNr = BaGbNumber
WHERE BoekregelUserId = 45 AND BoekRegelPeriode LIKE '2012%' AND BaSoort = 2
GROUP BY BoekRegelGrootboekNr
这让我得到了描述,以便工作正常,但问题是总数不匹配。我知道问题是什么,因为表balansen中有重复。
所以以某种方式表balansen也需要一个小组,但我不能让它工作,所以我希望其他人可以帮助我。
提前致谢!
答案 0 :(得分:0)
您必须在group by子句中包含非聚合字段: 试试这个:
SELECT
SUM(BoekRegelBedrag) as total,
BoekRegelPeriode,
BoekRegelGrootboekNr,
BaOmschrijving,
BaSoort
FROM BoekstukRegels
LEFT JOIN balansen
ON BoekRegelGrootboekNr = BaGbNumber
WHERE
BoekregelUserId = 45 AND
BoekRegelPeriode LIKE '2012%'
AND BaSoort = 2
GROUP BY
BoekRegelPeriode,
BoekRegelGrootboekNr,
BaOmschrijving,
BaSoort
答案 1 :(得分:0)
你知道如何在另一张桌子上做必要的小组以获得你想要的结果吗?如果是这样,那么你可以这样做:
SELECT SUM(BoekRegelBedrag) as total,
BoekRegelPeriode,
BoekRegelGrootboekNr,
BaOmschrijving,
BaSoort
FROM BoekstukRegels LEFT JOIN
(SELECT field1, field2, etc.
FROM balansen
GROUP BY FieldToGroupOn) tbl
ON BoekRegelGrootboekNr = BaGbNumber
WHERE BoekregelUserId = 45 AND BoekRegelPeriode LIKE '2012%' AND BaSoort = 2
GROUP BY BoekRegelGrootboekNr
答案 2 :(得分:0)
由于balansen中存在重复项,您需要确定哪些记录对您很重要,然后您就可以执行类似
的操作LEFT JOIN (
SELECT BaGbNumber, MAX(BaOmschrijving) AS BaOmschrijving
FROM balansen WHERE AND BaSoort = 2 GROUP BY BaGbNumber
) AS grouped_balansen ON BoekRegelGrootboekNr = BaGbNumber
现在,您将为每个输入行加入一行,并使总计正确。