2017-02-14 73 views
0

假設我有一個表作爲這樣:選擇從不同的領域頂2與另一場

PointOfSaleId, Name, Address 

我想選擇頂部的2條記錄具有相同NameAddress,與PointOfSaleId在一起。

例如我有以下記錄:

PointOfSaleId Name Address 
1    Foo Bar 
2    Foo Bar 
3    Foo Bar 
4    Foo2 Bar2 

結果應選擇以下內容:

1    Foo Bar 
2    Foo Bar 
4    Foo2 Bar2 

是否有這樣做的任何可行的方法?

回答

3

可以使用row_number排序函數和寫出這樣的查詢:

select 
    T.PointOfSaleId, 
    T.Name, 
    T.Address 
from 
(
    select 
     PointOfSaleId, 
     Name, 
     Address, 
     row_number() over (partition by Name, Address order by PointOfSaleId asc) as Num 
    from your_Table 
) as T 
where T.Num <= 2 

這將枚舉通過PointOfSaleId下令相同NameAddress所有對在內部查詢,然後在外部查詢你只選擇每對中的前兩個。

+0

謝謝,這幫助! –

0

嘗試

select top(2) with ties PointOfSaleId, Name, Address 
from myTable 
order by row_number() over (partition by Name, Address order by PointOfSaleId)