我很坚持这个查询。首先,我想实现什么?我想在三个表上进行内部连接(已经正确)并根据日期是否在当月过滤掉数据。如果日期不在当前月份,则不应填写“bedrag”字段,应将其设置为零。我还应该看到表格中的所有内容,但不应更改“bedrag”字段。
如果日期是从当月开始的,它应该添加到“bedrag”(注意 group by 这样做)并显示所有内容。现在我的查询做的一切都是正确的,除了当你有不是这个月的数据时。然后记录将丢失/不会显示。
表设计:http: //imgur.com/vhONCq1
查询:
SELECT c.id, c.omschrijving, l.maximumBedrag, SUM(IIF(IsNULL(f.bedrag), 0, f.bedrag)) AS bedrag
FROM ((Categorie c LEFT OUTER JOIN
Financien f ON f.categorieId = c.id) LEFT OUTER JOIN
Limiet l ON l.categorieId = c.id)
WHERE (f.inkomstOfUitgave IS NULL) OR
(f.inkomstOfUitgave = 1) AND (format(f.datum, 'yyyy-mm-dd') > format(NOW(), 'yyyy-mm'))
GROUP BY c.id, f.categorieId, c.omschrijving, l.maximumBedrag
请注意:这不是普通的 SQL,而是 C# 中用于将数据从 Access DB 获取到 DAL 和 BLL 层的变体。
一个示例,您可以在其中查看查询的哪些消息以及它是如何出错的:http: //imgur.com/V0N6Wbk
如果记录不是来自本月的,谁能告诉我如何才能显示所有数据,但又不添加床单?
谢谢!