我拿到了列表[TagTime],[TagValue],[id]。此表中的值每15分钟一次,所以具有相同ID的多个值。SQL MIN DATE> = 2017-01
我想select(tagtime,tagvalue,id),它将只在2017年1月为所有id返回第一个值。
我试着选择top 1,然后用group by,distinct ...但它不起作用。你有一些建议吗?
我拿到了列表[TagTime],[TagValue],[id]。此表中的值每15分钟一次,所以具有相同ID的多个值。SQL MIN DATE> = 2017-01
我想select(tagtime,tagvalue,id),它将只在2017年1月为所有id返回第一个值。
我试着选择top 1,然后用group by,distinct ...但它不起作用。你有一些建议吗?
试试这个(我假设你使用的是MSSQL)
SELECT TOP 1 *
FROM [tbl1]
WHERE DATEPART(MONTH,TagTime) = '01' AND DATEPART(YEAR,TagTime) = '2017'
ORDER BY TagTime DESC
这将只返回1行,而不是1行,因为OP期望 – PawelCz
你可以走这条路
select id, tagvalue, tagtime
from
(select id, tagvalue, tagtime,
row_number() over (partition by id order by tagtime) [RowNum]
from YourTable
where DATEPART(year, tagtime) = 2017) src
where src.[RowNum] = 1
所以,您不必为每个ID行号,由tagtime排序,然后选择只是第一个ID
添加样本数据与预期的o/p –
分享我们您没有成功的书面代码,也标记您正在使用的dbms –
分享一些书面代码,da列的类型。 – Hexxed