在最大日期后过滤日期 SQL

Filtering date after max date SQL

我有一个 table,值为 date/timstamps。这个table就是dbo.meterdata.value。我想看到的输出如下: The latest date/timestamp (Max) but only the ones where te latest date/timestamp is last week.我的查询是:

SELECT dbo.meter.DataImportCode
    ,dbo.meter.NAME
    ,dbo.company.NAME
    ,dbo.meter.MeterNumber
    ,MAX(dbo.meterdata.RoundedTimeStamp) AS 'laatste datum'
    ,dbo.MeterOperator.Description
    ,dbo.meter.CumulativeReadings
FROM dbo.meter
LEFT OUTER JOIN DBO.MeterData ON dbo.meter.MeterID = dbo.meterdata.MeterID
JOIN DBO.Site ON dbo.meter.SiteID = dbo.site.SiteID
JOIN DBO.Company ON dbo.site.CompanyID = dbo.company.CompanyID
JOIN DBO.MeterOperator ON dbo.meter.MeterOperatorID = dbo.MeterOperator.MeterOperatorID
    --WHERE (select (dbo.meterdata.roundedtimestamp) from dbo.MeterData) < DateAdd(DD,-7,GETDATE() )
    AND dbo.meterdata.RoundedTimeStamp IS NOT NULL
GROUP BY dbo.meter.DataImportCode
    ,dbo.company.NAME
    ,dbo.meter.NAME
    ,dbo.meter.MeterNumber
    ,dbo.MeterOperator.Description
    ,dbo.meter.CumulativeReadings

未过滤结果示例: Example

感谢您的帮助和支持

尝试以下操作:

select dbo.meter.DataImportCode, dbo.meter.Name, dbo.company.Name, dbo.meter.MeterNumber,MAX(dbo.meterdata.RoundedTimeStamp) AS 'laatste datum', dbo.MeterOperator.Description, dbo.meter.CumulativeReadings
from dbo.meter
LEFT OUTER JOIN DBO.MeterData ON dbo.meter.MeterID = dbo.meterdata.MeterID
JOIN DBO.Site on dbo.meter.SiteID = dbo.site.SiteID
JOIN DBO.Company on dbo.site.CompanyID = dbo.company.CompanyID
JOIN DBO.MeterOperator on dbo.meter.MeterOperatorID = dbo.MeterOperator.MeterOperatorID
--WHERE (select (dbo.meterdata.roundedtimestamp) from dbo.MeterData) < DateAdd(DD,-7,GETDATE() )
--AND dbo.meterdata.RoundedTimeStamp is not null
GROUP BY dbo.meter.DataImportCode, dbo.company.name, dbo.meter.Name, dbo.meter.MeterNumber, dbo.MeterOperator.Description, dbo.meter.CumulativeReadings
HAVING [laatste datum] < DateAdd(day,-7,GETDATE())

如果我没理解错的话,您要做的是在分组之后过滤掉数据。这是使用 SELECT 语句的 HAVING 子句完成的,如上面的查询所示。