0

我有一个包含日期/时间戳记值的表。该表是 dbo.meterdata.value。我想看到的输出如下:最新日期/时间戳(最大值),但只有最新日期/时间戳是上周的那些。我的查询是:

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

未过滤结果的示例: 示例

感谢您的帮助和支持

4

1 回答 1

0

尝试以下操作:

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())

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

于 2018-04-02T13:23:32.493 回答