Один и тот же запрос извлекает разные результаты - PullRequest
0 голосов
/ 04 марта 2012

Я слежу за этой статьей, чтобы узнать о ROLLUP и CUBE

http://beyondrelational.com/modules/2/blogs/28/posts/10471/tsql-lab-6-using-with-cube-to-generate-subtotal-and-grand-total-rows.aspx

Для этого запроса:

select
    case
        when grouping(CustomerName) = 1 then 'All Customers' 
        else CustomerName
    end as CustomerName,
    case
        when grouping(ItemName) = 1 then 'All Items'
        else ItemName
    end as ItemName,
    sum(quantity*pricepercase) as Amount1
from orders
group by CustomerName, ItemName 
with cube

У автора получился такой результат:

CustomerName         ItemName             Amount
-------------------- -------------------- ---------------------
Jacob                Item 1               312.50
Jacob                Item 2               480.00
Jacob                All Items            792.50
Mike                 Item 1               75.00
Mike                 Item 2               44.00
Mike                 All Items            119.00
All Customers        All Items            911.50
All Customers        Item 1               387.50
All Customers        Item 2               524.00

Две дополнительные строки, сгенерированные кубом, являются последними 2 строками.Я получаю результаты, как это:

CustomerName         ItemName             Amount
-------------------- -------------------- ---------------------
Jacob                Item 1               312.50
Mike                 Item 1               75.00
All Customers        Item 1               387.50
Jacob                Item 2               480.00
Mike                 Item 2               44.00
All Customers        Item 2               524.00
All Customers        All Items            911.50
Jacob                All Items            792.50
Mike                 All Items            119.00

Первый набор результатов выглядит соответствующим.Почему есть разница, когда я запускаю его?

1 Ответ

2 голосов
/ 04 марта 2012

IIRC SQL не гарантирует какой-либо порядок, за исключением случаев, когда у вас явно есть ORDER BY на месте ... иногда разные версии / уровни исправления SQL Server по-разному без ORDER BY.

Я не знаю, создал ли автор этот результат с использованием SQL Server 2005 или 2008 или 2008 R2 и т. Д. Но я очень подозреваю, что это причина того, что вы видите ...

Если вам нужен определенный порядок в наборе результатов, всегда используйте явное предложение ORDER BY!

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