2017-08-25 29 views
0

我有一個表名XYZ有col。名稱: -編寫一個SQL查詢以獲取版本低於授權版本

id(varchar), 
Version(Number), 
Authorize_state(Y/N), 
Action(Save/Reset/Delete/... etc) 

我已經把所有的版本Authorize_state =「N」則更低版本針對Authorize_state =「Y」 例如

Table 
ID. Version.  Authorize_state  Action 
1A.  2.     N.      Save 
1A.  3.     N.      Save 
1A.  5.     Y.      Update 
1A.  8.     N.      Reset 
1B.  1.     N.      DO 
1B.  3.     Y.      Accept 
1B.  5.     N.      Save 

1 - 所以現在我得和Id 1B的第一個版本2和3的版本編號1A 2 - 爲perticular IDŸ版本將永遠是一個在表中。

請幫我寫同樣的sql查詢。

回答

1
select 
    id, 
    min(version) min_v 
from xyz 
where Authorize_state='Y' 
group by id 

爲了獲得最小授權版本每個ID

select 
    xyz.* 
from xyz 
    inner join (the query above) sub on xyz.id = sub.id and xyz.version<sub.version 

然後再加入原表以最小的僅剩下版本比發現分鐘