在sql server 2008中将列数据显示为标题

在sql server 2008中将列数据显示为标题,sql,sql-server,sql-server-2008,Sql,Sql Server,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 mb

我有一张像这样的桌子:

-------------------
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

我认为您最好在UI/显示层中处理这个问题,但是如果您需要在SQL 2008中执行查询,可以使用with


我不确定你要的是哪种类型/订单。您的示例似乎仍然是按Id排序的。如果需要,您可以将Id列添加到
有序CTE
中,然后在查询结束时添加
按o.Id ASC排序。

Adam的答案会起作用,但他答案中最正确的部分是

您最好在UI/显示层中处理此问题

坦率地说,你想做的是错的。例如,下面说,
aditya
有class
mca
,但是
abhishek
akhilesh
没有class

class    name      sub 
--------------------- 
mca      aditya    network          
         abhishek  daa          
         akhilesh  algorithm 
btech    ram       cs              
         shyam     ds
         anand     client/server
abhishek
akhilesh
没有职业是真的吗?当然不是


因此,如果我有一个调用此存储过程或视图并查看此结果集的应用程序,我如何知道shyam属于哪个类?你不能说“这是btech,因为这是最后一个提到的类”,因为你怎么知道结果的查看顺序?您的查询中没有排序依据。

我以前至少见过一个类似的问题。当我这样做时,看起来OP在这两种情况下都希望使用SQL来开发报表。我怀疑这将被打印出来并展示给管理层,但这只是一个猜测。
class    name      sub 
--------------------- 
mca      aditya    network          
         abhishek  daa          
         akhilesh  algorithm 
btech    ram       cs              
         shyam     ds
         anand     client/server