2013-12-20 40 views
0

一段時間內卡住了問題。我給你下面的例子。根據其他列值篩選出一個列值

我有這個表

ID  | Dip | Azi | 
SV12360 |-45 | 229.3 | 
SV12360 |-45.1 | 228.3 | 
SV12360 |-44.8 | 223.3 | 
SV12359 |-39 | 249.3 | 
SV12359 |-39.4 | 279.3 | 
SV12357 |-55 | 290.3 | 
SV12357 |-57 | 210.3 | 
SV12318 |-47 | 212.3 | 
SV12318 |-47.2 | 241.3 | 
SV12317 |-41 | 289.3 | 
SV12317 |-40 | 211.3 | 
------------------------- etc. 

我想創建一個給我只有第一個值,每個ID查詢。例如,在這種情況下,我希望看到具有第一個Dip和Azi值的獨特ID。

ID  Dip Azi 
SV12360 | -45 | 229.3 
SV12359 | -39 | 249.3 
SV12357 | -55 | 290.3 

等的表格包含了關於19000行,我不想手動複製粘貼爲每個ID值。

+0

ROW_NUMBER()以上(分區由ID順序由DIP)作爲ROWNUM 然後其中的rownum = 1個 – KumarHarsh

回答

1
SELECT t2.* 
FROM (
     SELECT DISTINCT ID 
     FROM <yourTable> 
     ) t1 
CROSS APPLY 
     (
     SELECT TOP 1 * 
     FROM <yourTable> t 
     WHERE t.ID = t1.id 
     --ORDER BY <column> --you can specify which record is first    
     ) t2 
+0

運行完美!爲什麼我沒有想到這一點..謝謝! – user3121776

0
try below 



WITH ABC AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY id ORDER BY ID)'rank' FROM TBL) 

    SELECT * FROM ABC 
    WHERE rank= 1 

OR

select * from(
(SELECT *,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID)'rank' 
      FROM TBL) 
      )tmp where rank=1 
+0

謝謝你,這些工作像一個魅力。 – user3121776