SQL查询以从多个标签返回最后一个值

用户名

希望您能提供帮助。我是SQL的新手,所以这个人开始困扰我。

目前,我每天都在收集数据Meter Name该数据当前正被记录在带有列的表中TimeStamp, Name, Value但是,我想创建一个查询,该查询将仅返回针对Name中的每个记录的最新(最后)值

到目前为止,我已经构建了该查询,但是Top 1语法似乎并不是我所需要的。

SELECT Top 1 (DataLog.Timestamp), MeterTags.Name, DataLog.Value
FROM Meters
INNER JOIN MeterTags
ON Meters.MeterId = MeterTags.MeterId
INNER JOIN DataLog
ON MeterTags.MeterTagId = DataLog.MeterTagId
WHERE Meters.MeterTypeId = 8
GROUP By MeterTags.Name, DataLog.Timestamp

您可以提供的任何建议将不胜感激。

提前致谢。

加雷斯

您可以使用ROW_NUMBER为每个记录赋予行号(每个重置为0 MeterTags.Name),然后为每个名称选择第一个:

WITH CTE AS
(   SELECT  DataLog.Timestamp, 
            MeterTags.Name, 
            DataLog.Value,
            RowNumber = ROW_NUMBER() OVER(PARTITION BY MeterTags.Name 
                                        ORDER BY DataLog.TimeStamp DESC)
    FROM    Meters
            INNER JOIN MeterTags
                ON Meters.MeterId = MeterTags.MeterId
            INNER JOIN DataLog
                ON MeterTags.MeterTagId = DataLog.MeterTagId
    WHERE   Meters.MeterTypeId = 8
)
SELECT  CTE.Timestamp,
        CTE.Name,
        CTE.Value
FROM    CTE
WHERE   CTE.RowNumber = 1;

另一个解决方案是TOP 1APPLY内部使用

SELECT  DataLog.Timestamp, 
        MeterTags.Name, 
        DataLog.Value
FROM    Meters
        INNER JOIN MeterTags
            ON Meters.MeterId = MeterTags.MeterId
        CROSS APPLY
        (   SELECT  TOP 1 TimeStamp, Value
            FROM    DataLog
            WHERE   MeterTags.MeterTagId = DataLog.MeterTagId
            ORDER BY TimeStamp DESC
        ) DataLog
WHERE   Meters.MeterTypeId = 8;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL查询获取最后一个值

来自分类Dev

编写一个SQL查询多个值

来自分类Dev

Oracle SQL 函数返回一个或多个值

来自分类Dev

PHP数组(如果具有多个X值),则返回最后一个Y值

来自分类Dev

在Spring XD Source模块中返回MongoDB中的最后一个值查询

来自分类Dev

MySQL查询返回符合条件并受其他条件限制的表的最后一个值

来自分类Dev

用于选择具有 DISTINCT 的值且最后仅发布一个值的 SQL 查询

来自分类Dev

SQL返回一组列中不为null的最后一个列值

来自分类Dev

SQL查询仅返回一个条目,而应返回多个条目

来自分类Dev

Tkinter 标签只显示 for 循环的最后一个值

来自分类Dev

如果日期是一个月的最后一天,则 SQL 查询返回 1,否则返回 0

来自分类Dev

SQL Server子查询返回了多个值。当尝试从另一个选择插入子查询时,这是不允许的

来自分类Dev

LINQ查询仅联接最后一个值

来自分类Dev

选择最后一个值原则查询

来自分类Dev

jQuery每个循环始终返回最后一个值

来自分类Dev

Python:列表迭代仅返回最后一个值

来自分类Dev

记住从JDK 8 lambda返回的最后一个值

来自分类Dev

最后一个返回值会发生什么?

来自分类Dev

MySQL每天返回最后一个值

来自分类Dev

使用Replace With返回数组的最后一个值

来自分类Dev

返回每个组的最后一个“ true”值

来自分类Dev

美丽汤只返回表的最后一个值

来自分类Dev

用PHP返回数组的最后一个值

来自分类Dev

Excel lookup()始终返回最后一个值

来自分类Dev

Python:列表迭代仅返回最后一个值

来自分类Dev

Excel:VLOOKUP返回列中的最后一个值

来自分类Dev

MySQL每天返回最后一个值

来自分类Dev

array_combine仅返回最后一个值

来自分类Dev

循环返回始终相同的最后一个值

Related 相关文章

  1. 1

    SQL查询获取最后一个值

  2. 2

    编写一个SQL查询多个值

  3. 3

    Oracle SQL 函数返回一个或多个值

  4. 4

    PHP数组(如果具有多个X值),则返回最后一个Y值

  5. 5

    在Spring XD Source模块中返回MongoDB中的最后一个值查询

  6. 6

    MySQL查询返回符合条件并受其他条件限制的表的最后一个值

  7. 7

    用于选择具有 DISTINCT 的值且最后仅发布一个值的 SQL 查询

  8. 8

    SQL返回一组列中不为null的最后一个列值

  9. 9

    SQL查询仅返回一个条目,而应返回多个条目

  10. 10

    Tkinter 标签只显示 for 循环的最后一个值

  11. 11

    如果日期是一个月的最后一天,则 SQL 查询返回 1,否则返回 0

  12. 12

    SQL Server子查询返回了多个值。当尝试从另一个选择插入子查询时,这是不允许的

  13. 13

    LINQ查询仅联接最后一个值

  14. 14

    选择最后一个值原则查询

  15. 15

    jQuery每个循环始终返回最后一个值

  16. 16

    Python:列表迭代仅返回最后一个值

  17. 17

    记住从JDK 8 lambda返回的最后一个值

  18. 18

    最后一个返回值会发生什么?

  19. 19

    MySQL每天返回最后一个值

  20. 20

    使用Replace With返回数组的最后一个值

  21. 21

    返回每个组的最后一个“ true”值

  22. 22

    美丽汤只返回表的最后一个值

  23. 23

    用PHP返回数组的最后一个值

  24. 24

    Excel lookup()始终返回最后一个值

  25. 25

    Python:列表迭代仅返回最后一个值

  26. 26

    Excel:VLOOKUP返回列中的最后一个值

  27. 27

    MySQL每天返回最后一个值

  28. 28

    array_combine仅返回最后一个值

  29. 29

    循环返回始终相同的最后一个值

热门标签

归档