2015-03-19 47 views
0

我有很長的usersNames名單。我試圖獲得以A,B,C,D開頭的前10個用戶名......使用Visual Studio c#和本地數據庫。SQL - 以字母開頭的前10位用戶名

SELECT tmpA.UserName, tmpB.UserName ... 
FROM ( 
SELECT top 10 [UserName] 
FROM [Users] 
WHERE UserName LIKE 'A%' 
) tmpA, 
( 
SELECT top 10 [UserName] 
FROM [Users] 
WHERE UserName LIKE 'B%' 
) tmpB 

我想要得到的結果看起來像這樣:

a | b | c ... 
aa | bb | cc .... 
aaa | bbb | ccc ... 

其中第1列第10個用戶名開頭「A」,第二列具有前10名的用戶名開頭「 B「等。

希望你們其中一個能幫助我。謝謝你在前進

+1

你的代碼是使用SQL Server的約定,但你已標記與MySQL的問題。你真的在用什麼數據庫? – 2015-03-19 12:02:21

回答

2

在SQL Server中,你可以做到這一點使用窗函數和pivot或有條件聚集:

select max(case when left(name, 1) = 'a' then name end) as name_a, 
     max(case when left(name, 1) = 'b' then name end) as name_b, 
     . . . 
     max(case when left(name, 1) = 'z' then name end) as name_z 
from (select t.*, 
      row_number() over (partition by left(name, 1) order by name) as seqnum 
     from table t 
    ) t 
where seqnum <= 10 
group by seqnum 
+0

這似乎是做這項工作。感謝您抽出時間使其99%的複製粘貼能力。 – Helmer 2015-03-19 12:22:02