我拿到了列表[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