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 ループの使用に戻る必要はありませんが、そうする必要があるかもしれません。