отображение данных столбца в качестве заголовка в SQL Server 2008 - PullRequest
1 голос
/ 28 ноября 2011

У меня есть таблица типа:

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

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

Я думаю, что вам лучше справиться с этим на уровне UI / Display, но если вам нужен запрос для выполнения этого в SQL 2008, вы можете использовать CTE с ROW_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 голосов
/ 28 ноября 2011

Ответ Адама сработает, но самая правильная часть его ответа -

вам лучше справиться с этим в своем пользовательском интерфейсе / уровне отображения

То, что вы пытаетесь сделать, - прямо скажем - неправильно. Например, ниже сказано, что aditya имеет класс mca, но abhishek и akhilesh не имеют класса.

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

Правда ли, что abhishek и akhilesh не имеют класса? Конечно нет.

Итак, если у меня есть приложение, которое вызывает эту хранимую процедуру или представление и просматривает этот набор результатов, как мне узнать, к какому классу shyam принадлежит? Вы не можете сказать «это btech, потому что это последний упомянутый класс», потому что как вы узнаете, в каком порядке просматриваются результаты? У вас нет order by в вашем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...