2013-12-20 5 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 나에게 첫 번째 값을 제공하는 쿼리를 작성하고 싶습니다. 예를 들어,이 경우 첫 번째 딥과 아지 값이있는 고유 한 ID를보고 싶습니다. 등의 표

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

은 약 19000 행이 포함되어 내가 수동으로 모든 ID 값을 복사하여 붙여 넣을하지 않습니다.

+0

ROW_NUMBER()를 어디에 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 

또는 ROWNUM 로 (DIP에 의해 ID 순서로 파티션)를 통해

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

고마워요, 이런 것들에 대한 매력처럼 작동합니다. – user3121776

관련 문제