Работает ли ORDER BY в SELECT @ some_var = - PullRequest
0 голосов
/ 11 августа 2011

SQL Server 2008r2 Express SP1.Мне нужно составить строку со списком всех различных дат в некотором поле для EXEC «динамический SQL».Конечно, даты должны быть в правильном порядке.Приведенный ниже код работает нормально, но мой босс говорит, что в больших таблицах ORDER BY не будет работать в некоторых случаях из-за @pivot_list = ... в операторе SELECT.Он работал с SqlServer2000 и там этот код даже не был бы скомпилирован.Кто-нибудь может сказать мне, будет ли это работать на SQL Server 2008r2?

USE tempdb
GO
DECLARE @pivot_list varchar(max)

CREATE TABLE #TovarSales(FullDate varchar(8))

INSERT #TovarSales VALUES ('20101010')
INSERT #TovarSales VALUES ('20101210')
INSERT #TovarSales VALUES ('20091010')
INSERT #TovarSales VALUES ('20111111')
INSERT #TovarSales VALUES ('20050505')

SELECT  @pivot_list = ISNULL(@pivot_list + ', ', '') + '[' + TS.FullDate + ']'
FROM #TovarSales TS
GROUP BY  TS.FullDate
ORDER BY TS.FullDate

select @pivot_list

DROP TABLE #TovarSales

Спасибо.

1 Ответ

1 голос
/ 11 августа 2011

Этот код работает в SQL Server 2008.

Результат

 [20050505], [20091010], [20101010], [20101210], [20111111]
...