如果date不匹配[SQL &],则过滤日期数据,但在查询中显示除一个以外的所有值.c#)

本文关键字:一个以 显示 查询 SQL 不匹配 date 如果 数据 日期 过滤 | 更新日期: 2023-09-27 18:12:44

我在这个查询上卡住了。首先,我想达到什么目标?我想在三个表(已经正确)上进行内连接,并根据日期是否在当前月份过滤掉数据。如果日期不在当前月份,则不应填写字段"bedrag"并将其设置为零。我也应该看到表中的所有内容,但是'bedrag'字段不应该被改变。

如果日期是从当前月份开始,它应该添加'bedrag'(注意组by要这样做)并显示所有内容。现在我的查询做一切正确,除了当你有数据不是从这个月。那么记录就会丢失/不显示。

表设计:https://i.stack.imgur.com/zrFGq.jpg

查询:

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层的一种变体。

一个例子,你可以看到什么消息查询和它是如何出错的:https://i.stack.imgur.com/vsuy1.jpg

谁能告诉我,如果记录不是这个月的,我怎么才能把所有的数据都显示出来,而不加bedrag ?

谢谢!

如果date不匹配[SQL &],则过滤日期数据,但在查询中显示除一个以外的所有值.c#)

是否可以将WHERE的一些条件移到LEFT OUTER JOIN ?

SELECT c.id, sum(isnull(f.bedrag, 0))
FROM @cat c
LEFT OUTER JOIN @fin f ON f.catid=c.id AND f.datum > getdate()
LEFT OUTER JOIN @lim l ON l.catid = c.id

查看SQL文件