我已经花了很多天来进行SQL查询以获取表的最新条目。
这是关于测量的。因此,您的个人资料有表1(S_QOS_DATA
),而表2(RN_QOS_DATA
)表示结果。
现在我想要一个查询从每个配置文件中获取最新的测量值及其值。
我已经尝试了很多东西。
函数last()
在MS SQL中不可用,所以我必须使用last_value
并且我遇到很多问题。
SELECT rn.table_id, d.robot, d.target, max(rn.sampletime) as "Letzte Messung",
last_value(rn.sampletime) over (PARTITION by rn.table_id order by rn.sampletime DESC )
FROM RN_QOS_DATA_0012 as rn,
S_QOS_DATA as d
WHERE d.table_id = rn.table_id
AND target not LIKE 'QS_%'
AND target not LIKE 'TEST_%'
AND target not LIKE 'ENTW_%'
AND target not LIKE '%Ctrl%'
AND target not LIKE '%Arbeitsplatzaufbau%'
AND target not LIKE 'RT_%'
--and rn.samplevalue is not NULL
AND target LIKE '%gesamt%'
group by d.robot, d.target, rn.table_id, rn.sampletime
order by max(rn.sampletime)
有人能帮助我吗?!
S_QOS_DATA:
table_id 4 int identity
ci_metric_id 12 varchar
qos_def_id 4 int
创建了93 smalldatetime
校验和12 varchar
qos 12 varchar
来源12 nvarchar
目标12 nvarchar
主持人12 nvarchar
起源12 nvarchar
机器人12 nvarchar
探头12 varchar
r_table 12 varchar
h_table 12 varchar
v_table 12 varchar
sampletime 93 datetime
samplevalue 2数字
samplemax 2数字
nim_origin 12 nvarchar
修饰符12 varchar
samplerate 2数字
RN_QOS_DATA_0012:
table_id 4 int
sampletime 93 datetime
samplevalue 2数字
samplestdev 2数字
samplerate 2数字
tz_offset 4 int
答案 0 :(得分:1)
试试这个:
;WITH CTE as
(
SELECT
rn.table_id,
d.robot,
d.target,
rn.sampletime,
rank() over (PARTITION by rn.table_id order by rn.sampletime DESC ) rownum,
rn.samplevalue
FROM RN_QOS_DATA_0012 as rn,
JOIN
S_QOS_DATA as d
ON
d.table_id = rn.table_id
WHERE
target not LIKE 'QS_%'
AND target not LIKE 'TEST_%'
AND target not LIKE 'ENTW_%'
AND target not LIKE '%Ctrl%'
AND target not LIKE '%Arbeitsplatzaufbau%'
AND target not LIKE 'RT_%'
AND target LIKE '%gesamt%'
)
SELECT
table_id,
robot,
target,
sampletime,
samplevalue
FROM CTE
WHERE rownum = 1
GROUP BY
robot, target, table_id, sampletime, samplevalue
ORDER BY
sampletime
答案 1 :(得分:0)
通常这不能在一个查询中完成 - 您需要2个队列。首先确定最准确的采样时间,然后将其与数据相结合。
现在,您可以在一个sql语句中执行这两个查询,因为您实际上可以使用SELECT子句而不是表名。
SELECT * FROM A,(SELECT ....)为B
有效。
可以在http://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial
找到教程因此,内部查询确定按所需其他字段分组的最准确的采样时间,然后外部查询加入相关的其他数据。