我在 SQL 服务器中有一个查询,用于从两个站点表和与站点关联的记录中获取基本统计信息。
我无法弄清楚如何还创建一个显示每个“station_id”的最后一条记录的列
SQL:
SELECT xc_data1.station_id,
xc_data1.sensorname,
xc_sites.site_comment,
xc_sites.SITE_LONG_NAME,
xc_sites.IPADDRESS,
count(xc_data1.time_tag) as result_count,
min(xc_data1.time_tag) as start_time,
max(xc_data1.time_tag) as last_time
FROM [XC_DATA].[dbo].[xc_sites] INNER JOIN [XC_DATA].[dbo].[xc_data1] ON xc_sites.station_id = xc_data1.station_id
where time_tag > DATEADD(day, -7, GETDATE())
GROUP BY xc_data1.station_id, xc_data1.sensorname,xc_sites.site_comment, xc_sites.SITE_LONG_NAME, xc_sites.IPADDRESS
order by last_time desc
结果:
station_id | 传感器名称 | 网站评论 | SITE_LONG_NAME | IP地址 | 结果计数 | 开始时间 | 上次 |
---|---|---|---|---|---|---|---|
11370 | 雨 | 沼泽 | 死沼泽 | 10.123.192.6 | 2062 | 2022 年 7 月 14 日 11:00 | 2022 年 7 月 21 日 14:55 |
11369 | 雨 | 沙 | 霍比特人洞 | 10.123.192.56 | 2061 | 2022 年 7 月 14 日 11:00 | 2022 年 7 月 21 日 14:55 |
期望的结果:
station_id | 传感器名称 | 网站评论 | SITE_LONG_NAME | IP地址 | 结果计数 | Last_Record | 开始时间 | 上次 |
---|---|---|---|---|---|---|---|---|
11370 | 雨 | 沼泽 | 死沼泽 | 10.123.192.6 | 2062 | 0.01 | 2022 年 7 月 14 日 11:00 | 2022 年 7 月 21 日 14:55 |
11369 | 雨 | 沙 | 霍比特人洞 | 10.123.192.56 | 2061 | 0.5 | 2022 年 7 月 14 日 11:00 | 2022 年 7 月 21 日 14:55 |
编辑:
我已经对此进行了处理以检索最新值
SELECT station_id, sensorname, time_tag, orig_value
FROM (SELECT station_id, sensorname, time_tag, orig_value,
RANK() OVER (PARTITION BY station_id ORDER BY time_tag DESC) AS rk
FROM [XC_DATA].[dbo].[xc_data1]) t
WHERE rk = 1
ORDER BY time_tag desc
但我不确定如何将其结合到上一个查询中。
我不知道您到底想要什么,但我猜您想获取汇总数据并将其与最新数据相结合。你在寻找这样的东西吗?