2011-11-28 93 views
1

我有這樣一個表:顯示列數據在SQL Server頭2008

------------------- 
id class name  sub 
------------------------ 
1 mca aditya network 
2 mca abhishek daa 
3 mca akhilesh algorithm 
4 btech ram  cs 
5 btech shyam  ds 
6 btech anand  client/server 
7 mba furqan os 
8 mba arvind marketing 
9 mba aayush hr 

我想設置類似如下的結果:

---------------- 
class name  sub 
------------------------ 
mca  aditya network 
     abhishek daa 
     akhilesh algorithm 
btech ram  cs 
     shyam  ds 
     anand  client/server 
mba  furqan os 
     arvind marketing 
     aayush hr 

回答

3

我想你可能會更好處理這個在UI /顯示層,但如果你需要查詢,以做到在SQL 2008,您可以使用CTEROW_NUMBER()

WITH ordered AS 
(
    SELECT t.class, t.name, t.sub 
     , ROW_NUMBER() OVER (PARTITION BY t.class ORDER BY t.Name ASC) AS RowNumber 
    FROM myTable AS t 
) 
SELECT CASE 
      WHEN o.RowNumber = 1 THEN o.class 
      ELSE '' 
     END AS class 
    , o.name, o.sub 
FROM ordered AS o 

我不確定你要找什麼樣的排序/順序。您的示例似乎仍然由Id進行排序。如果需要,可以將Id列添加到ordered CTE中,然後在查詢結尾處添加ORDER BY o.Id ASC

+0

非常感謝它的成功! –

0

亞當的回答會的工作,但他的回答是最正確的部分是

你可能會更好在你的UI /顯示層處理這一

你正在嘗試做的是 - 說穿了 - 錯了。下面說,例如,adityamca類,但abhishekakhilesh沒有類。

class name  sub 
--------------------- 
mca  aditya network   
     abhishek daa   
     akhilesh algorithm 
btech ram  cs    
     shyam  ds 
     anand  client/server 

難道abhishekakhilesh沒有課嗎?當然不是。

因此,如果我有一個應用程序調用此存儲過程或視圖並查看此結果集,我該如何知道shyam屬於哪個類?你不能說'這是btech,因爲這是最後一堂課',因爲你怎麼知道結果被查看的順序?您的查詢中沒有order by

+0

我以前見過至少一個其他類似的問題。當我這樣做時,看起來兩種情況下的OP都希望使用SQL來開發報表。我懷疑這會打印出來並顯示給管理層,但這只是一個猜測。 –

+2

*握手*%* @ $ ing管理!!! –