ORDER BY неожиданно конфликтует с конкатенацией VARCHAR в TSQL

У меня есть код в Sql Server 2008, который объединяет некоторые строки из запроса в переменную, используя проверенный и истинаSELECT @VAR = @VAR + FIELD FROM TABLE ORDER BY OTHERFIELD синтаксис.

Это мой точный SQL:

SELECT @SQL = @SQL + 
    ISNULL(FORMULA, 
    CASE WHEN USEMAP = 1 THEN 
        'dbo.getFieldTranslation('+CONVERT(VARCHAR,ROWID)+', [' + ISNULL(ENCOMPASSFIELD,'') + '])' 
    ELSE 
        '[' + ISNULL(ENCOMPASSFIELD,'') + ']' END
    ) + 
    ' AS "' + FILECOLNAME + '",' + @CRLF  
FROM dbo.EXPORTMAP_EX 
WHERE WAREHOUSEID = @WHSID 
ORDER BY ORDERIDX

Это работало красиво и прекрасно. И вдруг сегодня перестало работать. Конкатенация была только в последнем ряду.с ценностями. При отладке я обнаружил, что если я достануORDER BY после этого все поля возвращаются, но сортируются строго по алфавиту по строковому значению полей.

Этот SQL, однако, используется для создания представления для экспорта. Файл экспорта должен иметь свои поля в правильном порядке, следовательно, предложение ORDER BY. Почему ORDER BY вдруг служитфильтр мои результаты?

Я не могу использовать маршрут XML / STUFF, потому что некоторые данные имеют < и> знаки в нем.

Я бы предпочел не возвращаться к использованию старого цикла WHILE, но мне, возможно, придется.

Ответы на вопрос(1)

Ваш ответ на вопрос