SQL查询列出非活动记录加上列出最后一个相关记录

时间:2013-04-11 18:07:59

标签: sql-server-2008-r2

SQL Server 2008 R2 我之前发布并收到了我的问题的完美答案。但现在我的客户想要在查询中添加其他内容。

我有两张桌子。我需要一个不活动报告(我已经能够创建),其中主表在notes表中没有相关记录x天。

现在我需要在此查询中添加最后一个音符的日期。

这是我的表结构:

Main Table FIELDS > file_number, sysid

Notes Table FIELDS > note_date, main_id

这是我当前的查询:

SELECT * 

FROM
  db.main m
  LEFT OUTER JOIN db.notes n
ON m.sysid = n.main_id 
AND CONVERT(VARCHAR(10),DATEADD (day, (n.[date]), '1800-12-28'), 101) > dateadd(dd, -14, getdate()) 
WHERE n.main_id is null 

1 个答案:

答案 0 :(得分:0)

这个怎么样:

SELECT
    *
FROM 
    db.main m
LEFT JOIN
    (
        SELECT 
            main_id
            , MAX(n.[DATE]) LastNote
        FROM
            db.notes 
        GROUP BY 
            main_id            
    ) n
    ON 
    n.main_id = m.sysid
WHERE 
    (
        n.main_id IS NULL
        OR 
        DATEDIFF(DAY, n.LastNote getdate()) > 14
    );

最后一个音符超过14天的主唱片和最后音符日期,如果根本没有音符,则为空白的lastDate。