我正在尝试查找在过去1个月内未创建注释的记录。该表格仅在创建便笺时注册。
我正在尝试找到NULL
值,但这不是正确的逻辑
SELECT *
FROM vpersonnotesalldata AS pn
WHERE pn.flddatecreated > '20190501'
AND pn.fldnotedatecreated < '20190530'
答案 0 :(得分:0)
如果您想要最近30天内没有记录的记录,请尝试以下操作:
select p.* from person p where personid not in (
select personid from Note where dateCreated < dateadd(d, -30, GetDate())
)
显然在sql中使用实际的表名
答案 1 :(得分:0)
在上个月的示例中尝试一下
SELECT *
FROM vpersonnotesalldata AS pn
WHERE pn.NoteColumnHERE IS NULL
AND pn.CreateDateColumnHERE
BETWEEN '01.05.2019'
AND '31.05.2019'
它从01.05之间的pn.CreateDateColumnHERE跨度中选择所有为NULL的pn.NoteColumnHERE。和31.05。
我希望日期输入对于您的SQL版本是正确的。在Microsoft SQL中,它可以正常工作!
答案 2 :(得分:0)
如果使用EXISTS / NOT EXISTS而不是IN / NOT IN
,则性能会更好。SELECT *
FROM Client C
WHERE NOT EXISTS (
SELECT 1
FROM vpersonnotesalldata
WHERE
fldClientNumber = C.fldClientNumber
AND fldnotedatecreated BETWEEN
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) --First day of previous month
AND DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1) --Last Day of previous month
)