2011-08-11 3 views
0

SQL Server 2008r2 Express SP1에서 작동합니다. EXEC '동적 SQL'에 대한 일부 필드의 모든 고유 날짜 목록을 표시해야합니다. 물론 날짜는 올바른 순서이어야합니다. 아래의 코드는 잘 작동하지만 내 상사는 SELECT 문에서 @pivot_list = ... 때문에 ORDER BY가 큰 테이블에서 작동하지 않는다고 말합니다. 그는 SqlServer2000을 사용하여이 코드를 컴파일하지도 않았습니다. 아무도 이것이 SQL Server 2008r2에서 작동하는지 여부를 말할 수 있습니까?ORDER BY는 SELECT @ some_var =

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 

감사합니다.

+0

입니다합니까 "그는 SQLSERVER2000과 협력하고있다 심지어 컴파일되지 않을 코드"- 당신이 무슨 말을하게? 나는 2000 년의 사본을 가지고 있지 않지만 왜 컴파일되지 않는지 아무 이유도 보이지 않는다 - 나는 종종이 트릭을 사용하여 나의 2000 일 동안 쉼표로 구분 된 문자열을 작성했다. – Tao

+0

또한, 당신은 더 좋을 수도있다. SQL 2005 이후에 사용 가능한 FOR XML PATH 트릭을 사용하여 다음을 수행 할 수 있습니다. http://www.n-smith.com/index.cfm/my-blog/2011-05-07-sql-concatenation-using-xml-path/ – Tao

+0

나는 2000 년을 가지고 있지도 않고 많은 일을하지 못했다. 그러나이 코드가 100 %의 경우에 작동하는지 여부는 걱정할 필요가 없습니다. 링크를 가져 주셔서 감사합니다. –

답변

1

이 코드는 SQL Server의 작품은 2008 년

결과는

[20050505], [20091010], [20101010], [20101210], [20111111] 
관련 문제