2013-05-01 30 views
1

假設如下:Management Studio中返回最小ID

CREATE TABLE #Testing 
(
     [id] [int] IDENTITY(1,1) NOT NULL, 
     [store_id] [varchar](3) NULL, 
     [sku] [varchar](14) NULL, 
     [qty] [bigint] NULL, 
     [http_action] [varchar](20) NULL 
) 

INSERT INTO #Testing (store_id, sku, qty, http_action) 
SELECT '001','123456',1,'POST' 
UNION ALL 
SELECT '002','123456',1,'POST' 
UNION ALL 
SELECT '002','123456',1,'DELETE' 
UNION ALL 
SELECT '001','223456',5,'DELETE' 

那是什麼,你可以運行到返回最小[ID]爲每一個查詢[http_action]?喜歡的東西:

MIN_DELETE MIN_POST 
3   1 

GO 
+0

來自哪兒呢三個? – Paparazzi 2013-05-01 19:20:10

回答

4

可以使用聚合函數與CASE表達得到min(id)每個http_action

select 
    min(case when http_action='DELETE' then id end) Min_Delete, 
    min(case when http_action='POST' then id end) Min_Post 
from #testing; 

SQL Fiddle with Demo

上述查詢放置min(id)值到單獨的列,如果你希望他們在行,那麼你可以使用:

select min(id) id, 
    http_action 
from #testing 
group by http_action; 

SQL Fiddle with Demo

0

解決的另一種方法是使用一個簡單的通過http_action分組。你會得到一個排的每個動作,但:

select http_action, MIN(id) min_id from #Testing group by http_action 

輸出:

http_action min_id 
DELETE   3 
POST   1