2015-08-19 24 views
0

我有一個名爲leads的表,它有一列company。每個公司在這個表格中放置幾行(或幾行)。所以問題是我使用一個簡單的SELECT * FROM Leads並顯示輸出結果,但有些公司感到憤怒的是,一家公司偏好另一家公司,但我不能告訴他們是因爲他們首先進入了領先地位。因此,我正在尋找一種解決方案,即每個公司的1個領先產品被輸出,然後在耗盡每個公司的1個領先時,僅出現下一組1領先。如何選擇一組數據並逐個顯示?

因此,例如,認爲這是輸入表

Lead ID Company 
    1   ABC 
    2   ABC 
    3   ABC 
    4   BCD 
    5   CDE 
    6   EFG 
    7   EFG 
    8   CDE 
    9   ABC 
    10   BCD 
    11   ABC 

然後,我需要這樣的東西

Lead ID Company 
    1   ABC 
    4   BCD 
    5   CDE 
    6   EFG 
    2   ABC 
    10   BCD 
    7   EFG 
    3   ABC 
    8   CDE 
    9   ABC 
    11   ABC 

因此,這裏正好是1分領先每個公司的出現,然後出現下一個公司的領先優勢。當一個特定的公司領導枯竭時,剩下的只會出現。這就是爲什麼在過去的2次結果中,ABC出現兩次,因爲沒有其他公司有未列出的潛在客戶。

+0

什麼是DB /版? –

+0

sql server 2012 –

回答

1

這可能是最接近你可以得到:

select * 
from Tab 
order by 
    row_number() over (partition by Company order by LeadID) 

結果將一種有序的隨機,您可以添加LeadIDORDER BY,看到fiddle

+0

謝謝。這工作! –

1
;With Data As (
    Select 
     *, 
     Rank() Over (Partition By Company Order By LeadID) Rnk 
    From LeadTableName 
) 
Select * From Data 
Order By Rnk, Company 
+0

感謝您回答這個問題。 @ dnoeth的答案奏效了 –

相關問題