2017-01-24 67 views
-3

我拿到了列表[TagTime],[TagValue],[id]。此表中的值每15分鐘一次,所以具有相同ID的多個值。SQL MIN DATE> = 2017-01

我想select(tagtime,tagvalue,id),它將只在2017年1月爲所有id返回第一個值。

我試着選擇top 1,然後用group by,distinct ...但它不起作用。你有一些建議嗎?

+1

添加樣本數據與預期的o/p –

+2

分享我們您沒有成功的書面代碼,也標記您正在使用的dbms –

+2

分享一些書面代碼,da列的類型。 – Hexxed

回答

0

試試這個(我假設你使用的是MSSQL)

SELECT TOP 1 * 
FROM [tbl1] 
WHERE DATEPART(MONTH,TagTime) = '01' AND DATEPART(YEAR,TagTime) = '2017' 
ORDER BY TagTime DESC 
+0

這將只返回1行,而不是1行,因爲OP期望 – PawelCz

0

你可以走這條路

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

+0

但是2017年1月在哪裏? – bobialen

+0

我編輯2017年,您的訂單將排序月 – Veljko89

+0

它工作得很好。如果我想要這個視圖不是恰好在2017年1月,而是在當前的月份? – bobialen