每個Y的最新X是一個經典的SQL問題工作中經常碰到當然不是按Y分組求最新的X值那麼簡單要求最新X的那條記錄或主鍵ID用一條SQL語句可以簡單的解決此問題
生成實例表和數據
創建表
CREATE TABLE dboTab
(
ID int NOT NULL IDENTITY ( )
Y varchar() NOT NULL
X datetime NOT NULL
)
GO
插入數據
INSERT INTO Tab(Y X) values(BBB ::)
INSERT INTO Tab(Y X) values(BBB ::)
INSERT INTO Tab(Y X) values(BBB ::)
INSERT INTO Tab(Y X) values(AAA ::)
INSERT INTO Tab(Y X) values(AAA ::)
INSERT INTO Tab(Y X) values(AAA ::)
GO
解決每個Y的最新X經典SQL問題
一條SQL語句實現
SELECT ID Y X
FROM Tab T
WHERE (NOT EXISTS
(SELECT
FROM Tab T
WHERE (TY = TY) AND (TX > TX OR
TX = TX AND TID > TID)))
在Y列在建立索引可以大大優化查詢速度
From:http://tw.wingwit.com/Article/program/Oracle/201311/17476.html