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

То есть чтобы в все null оказались внизу, а все данные вверху?

Заранее благодарен.
...
Рейтинг: 0 / 0
Группировка без null
    #39589693
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно нужна группировка, а не сортировка?
...
Рейтинг: 0 / 0
Группировка без null
    #39589697
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

можно и сортировка, но как?
...
Рейтинг: 0 / 0
Группировка без null
    #39589702
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahAkina,

можно и сортировка, но как?Сортировку делают написанием ORDER BY в конце запроса.
Можно отсортировать по выражению:
Код: sql
1.
case when [111] is null then 1 else 0 end
...
Рейтинг: 0 / 0
Группировка без null
    #39589710
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

вроде тоже самое получится...
...
Рейтинг: 0 / 0
Группировка без null
    #39589715
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,

а без вроде?
хоть так
Код: sql
1.
ORDER BY case when [111] is null then 1 else 0 end


хоть
Код: sql
1.
ORDER BY ISNULL(111,'zzz')
...
Рейтинг: 0 / 0
Группировка без null
    #39589717
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahalexeyvg,

вроде тоже самое получится...Нет.
Репро приведите, или хоть код покажите, что вы там написали.
...
Рейтинг: 0 / 0
Группировка без null
    #39589722
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	declare @sql nvarchar(max)=''

	set @sql = @sql + 'SELECT '+@var+' FROM (' + char(10) 
	set @sql = @sql + 'select distinct a.id,b.id idm,b.parentId,b.name from '  + char(10)  
	set @sql = @sql + '#tmp_struct a inner join #tmp_struct b on a.id=b.parentId' + char(10)  
	set @sql = @sql + 'where a.lvl=1' + char(10)  
	set @sql = @sql + ') AS pr ' + char(10) 
	set @sql = @sql + 'PIVOT (max(name) FOR [id] in ('+ @var+')) AS pvt'

	exec (@sql)
...
Рейтинг: 0 / 0
Группировка без null
    #39589726
vahalexeyvg,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	declare @sql nvarchar(max)=''

	set @sql = @sql + 'SELECT '+@var+' FROM (' + char(10) 
	set @sql = @sql + 'select distinct a.id,b.id idm,b.parentId,b.name from '  + char(10)  
	set @sql = @sql + '#tmp_struct a inner join #tmp_struct b on a.id=b.parentId' + char(10)  
	set @sql = @sql + 'where a.lvl=1' + char(10)  
	set @sql = @sql + ') AS pr ' + char(10) 
	set @sql = @sql + 'PIVOT (max(name) FOR [id] in ('+ @var+')) AS pvt'

	exec (@sql)

не увидел группировки или сортировки. от слова - совсем...
...
Рейтинг: 0 / 0
Группировка без null
    #39589737
aleksrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется мы его не так поняли, видимо он хочет чтобы было типа:
PR, СЛАБ, ?, ПКФ, Советник, это одна строка, и далее в том же духе.
...
Рейтинг: 0 / 0
Группировка без null
    #39589739
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleksrov,

вот именно, сложно объяснить
...
Рейтинг: 0 / 0
Группировка без null
    #39589746
vah,

что ли, просто в каждом столбце сдвинуть все данные вверх?

тогда тебе нужно разложить выборку на таблицы-столбцы. сделать столько таблиц, сколько столбцов желаешь видеть в итоговой выборке. каждую получившуюся таблицу-столбец перенумеровать при помощи row_number. далее фулл джойном соединить все эти поля-таблицы в один итоговый набор данных....
...
Рейтинг: 0 / 0
Группировка без null
    #39589748
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahaleksrov,
вот именно, сложно объяснить
Сложно объяснить на пальцах? - давай данные и рисуй вывод, который из этих данных должен получиться.
...
Рейтинг: 0 / 0
Группировка без null
    #39589759
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх,

согласен :)

Код: 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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
DECLARE @a TABLE 
(
	[111] VARCHAR(5),
	[222] VARCHAR(5),
	[333] VARCHAR(5)
)

INSERT INTO @a VALUES
(NULL,NULL,'LLL'),
('AAAA',NULL,NULL),
(NULL,'BBB','CCC'),
('XXXX',NULL,'NNN'),
('DDDD',NULL,NULL),
(NULL,NULL,'III')


;WITH a as 
(
	SELECT 
		[r] = ROW_NUMBER() OVER (ORDER BY 1/0),
		[a] = [111] 
	FROM @a
	WHERE [111] IS NOT NULL
), b as 
(
	SELECT 
			[r] = ROW_NUMBER() OVER (ORDER BY 1/0),
			[a] = [222] 
	FROM @a
	WHERE [222] IS NOT NULL
), c as
(
	SELECT 
		[r] = ROW_NUMBER() OVER (ORDER BY 1/0),
		[a] = [333] 
	FROM @a
	WHERE [333] IS NOT NULL
)
SELECT 
	a.a,
	b.a,
	c.a
FROM a
FULL JOIN b
ON
	a.r = b.r
FULL JOIN c
ON
	c.r = a.r
...
Рейтинг: 0 / 0
Группировка без null
    #39589784
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

Спасибо!
...
Рейтинг: 0 / 0
Группировка без null
    #39589838
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой вариант "с сохранением структуры":
Код: 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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
DECLARE @a TABLE 
(
	[111] VARCHAR(5),
	[222] VARCHAR(5),
	[333] VARCHAR(5)
)

INSERT INTO @a VALUES
('AAAA',NULL,NULL),
(NULL,NULL,'FFF'),
(NULL,'EEE',NULL),
(NULL,'BBB',NULL),
(NULL,NULL,'CCC'),
(NULL,NULL,'LLL'),
('XXXX',NULL,NULL),
('ZZZZ',NULL,NULL),
(NULL,NULL,'NNN'),
('DDDD',NULL,NULL),
(NULL,NULL,'III');



with 
A as 
(Select *,row_number() over (Order by (select 1)) as rn From @a ),
B as
(Select *,count([111]) over (Order by rn) as ID_111 From A),
C as
(Select *,
        count([222]) over (partition by ID_111 Order by rn) as ID_222,
	max([111]) over (partition by ID_111)  as [_111]
	From B),
D as
(Select *,
        count([333]) over (partition by ID_111,ID_222 Order by rn) as ID_333,
	max([222]) over (partition by ID_111,ID_222)  as [_222]
	From C),
E as
(Select *,
        max([333]) over (partition by ID_111,ID_222,ID_333)  as [_333],
	max(ID_222) over (partition by ID_111) as Count_222,
	max(ID_333) over (partition by ID_111,ID_222) as Count_333
	From D)
Select [_111],[_222],[_333] From E
Where not(Count_222>0 and ID_222 = 0) 
   and not(Count_333>0 and ID_333 = 0) 


Результат:
_111_222_333AAAAEEE<NULL>AAAABBBCCCAAAABBBLLLXXXX<NULL><NULL>ZZZZ<NULL>NNNDDDD<NULL>III
...
Рейтинг: 0 / 0
Группировка без null
    #39589850
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
Если значений в столбце "B" больше, чем в "A", то результат будет некорректный. Правильнее:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT 
	a.a,
	b.a,
	c.a
FROM a
FULL JOIN b
ON
	a.r = b.r
FULL JOIN c
ON
-----Исправление:
	c.r = isnull(a.r,b.r)
...
Рейтинг: 0 / 0
Группировка без null
    #39589865
aleksrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kopelly,

И что же неправильного, у нас Full Join, а значит будет в A будет Null, а в B знач.
А ваш запрос из разряда как простые вещи сделать сложными :)
...
Рейтинг: 0 / 0
Группировка без null
    #39589871
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моем варианте неправильное условие. правильнее так:
Код: sql
1.
2.
3.
From E
Where not(Count_222>0 and ID_222 = 0 and Count_333=0) 
   and not(Count_333>0 and ID_333 = 0)
...
Рейтинг: 0 / 0
Группировка без null
    #39589874
aleksrov,

да погодь ты критиковать....
человек второй день на форуме. ;)
пусть пишет любые решения. у него интересный ракурс в подходе к решению избитых задач форума.
нужно же оценить высоту полета его мысли.
свежая кровь оно всегда хорошо, может чего и для себя приглядим :)

З.Ы.
я на полном серьезе, без сарказма...
...
Рейтинг: 0 / 0
Группировка без null
    #39589876
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleksrov,
При
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
INSERT INTO @a VALUES
(NULL,NULL,'LLL'),
('AAAA',NULL,NULL),
(NULL,'BBB','CCC'),
('XXXX',NULL,'NNN'),
('DDDD',NULL,NULL),
(NULL,NULL,'III'),
(NULL,'QQQ',NULL),
(NULL,'WWW',NULL),
(NULL,'EEE',NULL),
(NULL,'RRR',NULL)


получаем:
aaaAAAABBBLLLXXXXQQQCCCDDDDWWWNNN<NULL>EEE<NULL><NULL>RRR<NULL><NULL><NULL>III

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


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