SELECT @VAR = @VAR + FIELD FROM TABLE ORDER BY OTHERFIELD
我在 Sql Server 2008 中有代码,它使用经过验证的语法将查询中的一些字符串连接到变量中。
这是我的确切 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 循环,但我可能不得不这样做。