2013-12-20 197 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