(http://)各位大大:
不好意思,因為當初沒有電腦所以用了手機一個個打字隨便舉例,回家才發現原來電腦版有插圖片的功能,那我再說一次我的問題:因為我的工作是會透過SQL資料庫中抓取我要的資訊到EXCEL,但每次都需要耗費很多時間再刪除重複的筆數,偶然得知MAX函數可以抓取最大值,但很奇怪的是MAX篩選過後的確得到時間最新資訊,但是其他欄位卻無法只抓到同一個欄位的資訊,像是BAY因為有數字顯示就出現兩筆資訊,但我如果將改成MAX(BAY)好像又不對,能否麻煩各位~太感謝
CREATE TABLE TestResults (
MeterSN Varchar(20) NULL ,
LotNumber Varchar(20) NULL,
DateTime_ID DateTime NULL,
BAY Varchar(20) NULL);
INSERT INTO TestResults (MeterSN,LotNumber,DateTime_ID,BAY)
VALUES
('h01934245','P0401','2021-04-26 02:27:42.227','3'),
('h01934245','P0401','2021-04-26 03:47:13.003','6'),
('h01934245','P0402','2021-03-20 04:27:42.227','7'),
('h01934246','X0401','2021-03-10 05:27:42.227','1'),
('h01934246','X0401','2021-03-12 06:27:42.227','2');
-- 方法一
SELECT MeterSN,LotNumber,DateTime_ID,BAY
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY MeterSN,LotNumber ORDER BY DateTime_ID DESC) AS ROWNUM,*
FROM TestResults) AS TempM
WHERE ROWNUM = 1
ORDER BY MeterSN,LotNumber
-- 方法二
SELECT TestResults.MeterSN,TestResults.LotNumber,TestResults.DateTime_ID,TestResults.BAY
FROM TestResults
INNER JOIN (
SELECT MeterSN,LotNumber,MAX(DateTime_ID) AS DateTime_ID
FROM TestResults
GROUP BY MeterSN,LotNumber) AS Temp ON Temp.MeterSN=TestResults.MeterSN
AND Temp.LotNumber=TestResults.LotNumber
AND Temp.DateTime_ID=TestResults.DateTime_ID
ORDER BY TestResults.MeterSN,TestResults.LotNumber