Работа вокруг группы - SQL Server - PullRequest
0 голосов
/ 02 февраля 2012

Учитывая этот вывод на один запрос:

ID   |  Question  |  Answer

1    |     1      |    2
1    |     2      |    5
1    |     3      |    5
2    |     1      |    2
2    |     2      |    2
3    |     4      |    7

Есть ли способ в sql иметь что-то вроде:

ID   |  Question  |  Answer
1   
     |     1      |    2
     |     2      |    5
     |     3      |    5
2    
     |     1      |    2
     |     2      |    2
3    
     |     4      |    7 

Цель состоит в том, чтобы не повторять ID снова и снова, но мне нечего группировать, поскольку я хочу показать все результаты по отдельности.

Я пытался обойти GROUP BY, но пока без особых результатов. Я использую SQL Server.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Это не проблема SQL
Это является проблемой представления кода клиента

Например, в службах Reporting Services или Crystal Reports вы должны установить группировку по идентификатору

2 голосов
/ 02 февраля 2012

Вам необходимо

  • вставить дополнительные строки для заголовков
  • удалить идентификатор из строки сведений
  • , чтобы убедиться, что порядок правильный, поэтому правильные заголовкиНад правильными деталями.

Пример:

select
    -- Show the ID only if it is not a detail row
    case when Question is null then ID else null end as ID,
    Question, 
    Answer
From 
(
    -- Detail rows
    select ID, Question, Answer from T1
    union all
    -- Heading rows
    select distinct ID, cast(null as type) as Question, cast(null as type) as Answer from T1

)x
order by 
    -- In order of ID
    x.ID, 
    -- but make heading rows come first
    case when x.Question is null then 0 else 1 end asc, 
    -- then order by question
    x.Question
...