如何查找上个月没有“创建日期”列的记录

时间:2019-06-17 07:09:25

标签: sql

我正在尝试查找在过去1个月内未创建注释的记录。该表格仅在创建便笺时注册。

我正在尝试找到NULL值,但这不是正确的逻辑

SELECT * 
FROM vpersonnotesalldata AS pn
WHERE pn.flddatecreated > '20190501' 
AND pn.fldnotedatecreated < '20190530'

3 个答案:

答案 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
)