各位大大好 想請問MS SQL資料庫要怎麼只撈取最新日期的資料呢???
SELECT
[pat_no]
,[item_code]
,[value]
,[rpt_time]
FROM [Tmhtc_PHR].[dbo].[lab_item]
WHERE [pat_no] = '33561' AND ([item_code] = '09015' OR [item_code] = '09002' OR [item_code] = '09025' OR [item_code] = '09026')
ORDER BY [rpt_time] DESC
還是有點不懂......
1.你是只要(09002, 09015, 09025, 09026)這四個中,各自日期最新的資料?
2.還是日期最新的資料?
3.還是不管是誰,他們各自最新的資料?
//第一個
SELECT
[pat_no],
[item_code],
[value],
max([rpt_time])
FROM [Tmhtc_PHR].[dbo].[lab_item]
WHERE [pat_no] = '33561'
AND [item_code] in ('09015','09002','09025','09026')
GROUP BY [item_code]
//第二個
SELECT
*
FROM [Tmhtc_PHR].[dbo].[lab_item]
WHERE [pat_no] = '33561' AND [rpt_time] = (SELECT max([rpt_time]) FROM [Tmhtc_PHR].[dbo].[lab_item] )
GROUP BY [item_code]
//第三個
SELECT
[pat_no],
[item_code],
[value],
max([rpt_time])
FROM [Tmhtc_PHR].[dbo].[lab_item]
WHERE [pat_no] = '33561'
GROUP BY [item_code]
哇!第一個最佳解答www
沒關係,就溝通呀
能解答到您,真是太好了
但是大大,實際RUN會有錯誤
我把語法改成 變成全部資料都撈出來 @@
SELECT
[pat_no],
[item_code],
[value],
max([rpt_time])
FROM [Tmhtc_PHR].[dbo].[lab_item]
WHERE [pat_no] = '33561'
AND [item_code] in ('09015','09002','09025','09026')
GROUP BY [item_code], [pat_no], [value]
GROUP BY 用錯了喔
你應該是想用ORDER BY 吧??
你GROUP BY value 你只要全部的值都不一樣,他就幫你分類喔
這樣…
SELECT *
FROM table
WHERE rpt_time=(
SELECT MAX(rpt_time) FROM table);
這樣只會出現最後日期時間的資料,並不是最新日期的資料?
如果是日期應該用 MAX(convert(varchar, rpt_time, 112))
最後日期時間 不等於 最新日期?
是 最新日期 的那一筆資料...不是只有日期...
是啊,所以應該是
SELECT *
FROM table
WHERE convert(varchar, rpt_time, 112)=(SELECT MAX(convert(varchar, rpt_time, 112)) FROM table);
這個資料比較像溫濕度及壓力的data。
可惜他的rpt_time欄位
4筆都是2018-05-01 09:51:00
不知道那筆是最新的~
@純真的人
item_code 是不一樣的,應該是抓同一天的不同地方的溫度、濕度與壓力資料。
試試以下SQL
select * FROM [Tmhtc_PHR].[dbo].[lab_item]
where CONVERT(varchar(12) , rpt_time, 111 )=( select top 1 CONVERT(varchar(12) , rpt_time, 111 ) from [Tmhtc_PHR].[dbo].[lab_item]
order by rpt_time desc )