Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 group by with rollup возвращает неверный результат. Баг или фича?  [new]
boogier
Member

Откуда: Н.Новгород
Сообщений: 220
SQL:
-----------------------------------------
declare @t table (a char(2))

insert @t select '12'
insert @t select '13'
insert @t select '21'


select
	left(a, 1)
	, a
	, count(*)
from
	@t
group by
	left(a, 1)
	, a
with 
	rollup

-----------------------------------------


Результат:
1	12	1
1 13 1
NULL NULL 2
2 21 1
NULL NULL 1
NULL NULL 3

А должно быть:
1	12	1
1 13 1
1 NULL 2
2 21 1
2 NULL 1
NULL NULL 3


Это наблюдается на 2005, 2008, 2008r2, 2012.
Это фича такая или всё же баг?
22 апр 13, 08:08    [14211104]     Ответить | Цитировать Сообщить модератору
 Re: group by with rollup возвращает неверный результат. Баг или фича?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
так ОНО работает...вот...для понимания:

select *, count(*) from
(
select
	left(a, 1) b
	, a
from
	@t
) t
group by
	b
	, a
with 
	rollup


ну и как вариант решения вашей задачи:

select isnull(a,b) a, count(*) from
(
select
	left(a, 1) b
	, a
from
	@t
) t
group by
	b
	, a
with 
	rollup
22 апр 13, 08:29    [14211131]     Ответить | Цитировать Сообщить модератору
 Re: group by with rollup возвращает неверный результат. Баг или фича?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Knyazev Alexey
...для понимания

не совсем понял сперва, что вам надо...сори...
22 апр 13, 08:32    [14211135]     Ответить | Цитировать Сообщить модератору
 Re: group by with rollup возвращает неверный результат. Баг или фича?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
согласно логическому порядку выполнения запроса:
http://msdn.microsoft.com/en-us/library/ms189499.aspx
выражения в select-листе должны вычисляться после выполнения rollup. соответственно, и left(a, 1) применяется к тому значению a, которое получилось после rollup.

но да, в 2000-ом поведение было другим. официальных объяснений я не видел.
22 апр 13, 09:23    [14211205]     Ответить | Цитировать Сообщить модератору
 Re: group by with rollup возвращает неверный результат. Баг или фича?  [new]
boogier
Member

Откуда: Н.Новгород
Сообщений: 220
daw,

Похоже, что это на самом деле так. Но это совсем не то, что ожидаешь, рисуя такой запрос :(
Я, конечно, зарегистрировал баг, но микрософт, если руки дойдут, скорей всего ответит, что Won't fix, потому что By design...
Но можете проголосовать "за", если считаете, что это необходимо поправить :)
22 апр 13, 15:44    [14213404]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить