powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пустая строка между группой результатов
21 сообщений из 21, страница 1 из 1
Пустая строка между группой результатов
    #39798393
kkaft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, ситуация такая, нужно сделать пустую строку, есть примерно такая ситуация

group id id
1 1
1 2
1 3
1 4
2 5
2 6
3 7
3 7

хочется после каждой группы делать пустую строку

group id id
1 1
1 2
1 3
1 4

2 5
2 6

3 7
3 7

как это реализовать? Спасибо.
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798398
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MSSQL нет понятия "пустая строка".
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798402
kkaft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич, да, не совсем корректно выразился, но мне как-то нужно сделать такой отступ после каждой группы запросов
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798405
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kkaft,

Выдайте сюда код, которым вы группируете. Тогда что-то можно сделать.

GROUP BY GROUPING SETS может решить вашу задачу, но надо сначала понять, что вы группируете. group id id это невалидный синтаксис
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798407
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kkaftГавриленко Сергей Алексеевич, да, не совсем корректно выразился, но мне как-то нужно сделать такой отступ после каждой группы запросовНарисуйте ваше клиентское приложени и там отображайте как хотите. При чем тут сервер-то?
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798433
Valera Kochemasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kkaft,
declare @tempo table (SmMon money, Grp int)
insert @tempo
select 111, 0
union all select 222, 0
union all select 333, 0
union all select 444, 1
union all select 555, 1
union all select 666, 2
union all select 776, 2

declare @space table (SmMon sql_variant)

declare @int int select @int=min(Grp) from @tempo
declare @max int select @max=max(Grp) from @tempo
while @int<=@max
begin
insert @space select SmMon from @tempo where Grp=@int
insert @space select 0
set @int=@int+1
end

select case when SmMon=0 then ' ' else SmMon end from @space
go
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798439
kkaft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,

Запрос примитивный:

SELECT group_id, id
FROM idtable
GROUP BY group_id, id
ORDER BY group_id ASC
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798443
Valera Kochemasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kkaft,

малёк поточнее
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
declare @tempo table (SmMon money, Grp int)
insert  @tempo
          select 111, 0
union all select 222, 0
union all select 333, 0
union all select 444, 1
union all select 555, 1
union all select 666, 2
union all select 776, 2

declare @space table (SmMon sql_variant)

declare @int int select @int=min(Grp) from @tempo
declare @max int select @max=max(Grp) from @tempo
while @int<=@max
 begin
  insert @space select SmMon from @tempo where Grp=@int
  if @int<@max insert @space select 0
  set @int=@int+1
 end

select case when SmMon=0 then ' ' else SmMon end from @space
go
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798451
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valera Kochemasov,

/facepalm -- в определении этого явления точно должна стоять ссылка на ваши посты.
Воистину, нет ничего хуже безграмотного неуча, который об этом не в курсе.

UPD

Хотя бы так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
declare @tempo table (SmMon money, Grp int)
insert  @tempo
          select 111, 0
union all select 222, 0
union all select 333, 0
union all select 444, 1
union all select 555, 1
union all select 666, 2
union all select 776, 2

select
    a.SmMon
    , Grp = iif ( tag = 0, a.Grp, null )
from (
    select 
        *
        , tag = 0 
    from @tempo a
    union all 
    select distinct
        null
        , b.grp
        , tag = 1
    from @tempo b
    where
        b.grp < ( select max(x.grp) from @tempo x )
) a
order by
    a.Grp
    , a.tag
    , a.SmMon



Но, в целом, задача очень странная и имеет отношение к отображению, а не к выборке данных.
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798456
Valera Kochemasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей АлексеевичValera Kochemasov,

/facepalm -- в определении этого явления точно должна стоять ссылка на ваши посты.
Воистину, нет ничего хуже безграмотного неуча, который об этом не в курсе.

UPD

Хотя бы так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
declare @tempo table (SmMon money, Grp int)
insert  @tempo
          select 111, 0
union all select 222, 0
union all select 333, 0
union all select 444, 1
union all select 555, 1
union all select 666, 2
union all select 776, 2

select
    a.SmMon
    , Grp = iif ( tag = 0, a.Grp, null )
from (
    select 
        *
        , tag = 0 
    from @tempo a
    union all 
    select distinct
        null
        , b.grp
        , tag = 1
    from @tempo b
    where
        b.grp < ( select max(x.grp) from @tempo x )
) a
order by
    a.Grp
    , a.tag
    , a.SmMon



Но, в целом, задача очень странная и имеет отношение к отображению, а не к выборке данных.

Уважаемый Академик! Я, как жалкий НЕУЧ, сообщаю Вам, что ваш код НЕ РАБОТАЕТ в SQL Server 2005. Настоятельно рекомендую Вам не морочить голову начинающим.
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798457
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Valera Kochemasov,

Я вам выдал недельный бан, чтобы вы подумали над двумя вопросами:

1. Этот код не работает практически нигде -- ни на MSSQL 2005, ни на SQL 4.2, ни в оракле или кассандре. Однако, если автором топика версия сервера не озвучена, то большинство как правило не предполагает, что вопрос про раритет или это оффтопик. Тот факт, что вы используете устаревшую и не поддерживаемую версию, говорит лишь в пользу того, что вы ССЗБ.

2. Как будет выглядеть ваш код для следующих начальных данных:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare @tempo table (SmMon money, Grp float)
insert  @tempo
          select 111, 0 + 1. / 99999
union all select 222, 0 + 1. / 99999
union all select 333, 0 + 1. / 99999
union all select 444, 1 + 1. / 66666
union all select 555, 1 + 1. / 66666
union all select 666, 2 + 1. / 33333
union all select 776, 2 + 1. / 33333
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798479
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальный код - это когда просто и правильно
Учись, студент

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @idtable table (id int, group_id int)
insert  @idtable
          select 111, 0
union all select 222, 0
union all select 333, 0
union all select 444, 1
union all select 555, 1
union all select 666, 2
union all select 776, 2
;

SELECT group_id, id
FROM @idtable
GROUP BY group_id, id
ORDER BY group_id ASC ;

with query as (SELECT Ord = 0, group_id, id FROM @idtable GROUP BY group_id, id )
   , emptyStr as ( SELECT Ord = 1, group_id, id = null FROM @idtable GROUP BY group_id )
   , queryWithEmptyStr as ( select * from query union all select * from emptystr )
 select group_id = case when id is not null then group_id end, id from queryWithEmptyStr as t order by t.group_id ASC, t.Ord asc
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798577
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SemiGenУ Валеры универсальнее, можно в разделительные строки вставлять дополнительную информацию - промежуточные Суммы, Количество Строк, Заголовки с Названием Групп и т. д.Для реализации перечисленной фигни циклы не нужны. Так что у Валеры типичный говнокод.

Ну и можно не читать исходную таблицу несколько раз
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with s as
(
 select
  id, group_id,
  max(id) over (partition by group_id) as max_of_id,
  1 as row_order
 from
  @idtable
)
select
 a.group_id, a.id
from
 s cross apply
 (select s.id, s.group_id, s.row_order union all select null, null, 2 where s.id = s.max_of_id) a
order by
 s.group_id, s.id, a.row_order;
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798620
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Клона Валеры, который восхищался Валерой, я забанил. Валере -- еще одна такая выходка, и бан будет перманентный.
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798641
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kkaft,

Ваше желание хорошее, но форматирование текста надо делать на стороне клиентского приложения.
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798696
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kkaft,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @tempo table (ID INT IDENTITY (1,1), SmMon money, Grp int)
insert  @tempo
          select 111, 0
union all select 222, 0
union all select 333, 0
union all select 444, 1
union all select 555, 1
union all select 666, 2
union all select 776, 2


SELECT SmMon, Grp, COUNT(ID)
FROM @tempo
GROUP BY GROUPING SETS ((SmMon, Grp), (Grp))
ORDER BY Grp, GROUPING(SmMon), SmMon
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39798969
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kkaft,

Конкретно, под Ваши данные. Под свежую версию.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE @T TABLE (GroupId INT, Id INT)
INSERT @T VALUES (1, 1),(1, 2),(1, 3),(1, 4),(2, 5),(2, 6),(3, 7),(3, 7)

; WITH CTE AS 
(
SELECT GroupId, Id 
  FROM @T
  UNION ALL 
  SELECT  GroupId, NULL
  FROM @T
  GROUP BY GroupId
) 
SELECT 
       IIF(Id IS NULL, NULL, GroupId) AS GroupId, 
       Id
  FROM CTE
 ORDER BY ROW_NUMBER() OVER(ORDER BY GroupId, ISNULL(Id, CHECKSUM(0*NULL))) 
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39801814
Valera Kochemasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой, напугал! Да бань сколько хочешь. Всё равно польза твоя никакая - оскорбляешь, посылаешь в хелп.
Есть другие форумы, весьма достойные. Народ там доброжелательный, а модераторы не хамят новичкам.
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39801982
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valera Kochemasov,

Вы считаете читать справку ниже своего достоинства, что ли? Недостойно задавать вопросы, не прочитав справку.
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39801984
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valera KochemasovОй, напугал! Да бань сколько хочешь. Всё равно польза твоя никакая - оскорбляешь, посылаешь в хелп.
Есть другие форумы, весьма достойные. Народ там доброжелательный, а модераторы не хамят новичкам.
Валера - хороший!
...
Рейтинг: 0 / 0
Пустая строка между группой результатов
    #39802032
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valera Kochemasov,

Ага, и конкурсы там интересные. Удачи на просторах интернетов.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пустая строка между группой результатов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]