Конкатенация значений столбцов с отдельными получает странный результат

У меня есть простая таблица с двумя значениями. Я выбираю его и объединяю значения с отдельным модификатором, но он просто получает последнее значение. Неужели я ошибаюсь в DISTINCT?

DECLARE @table TABLE(Id int) DECLARE @result VARCHAR(MAX) = '' INSERT @table VALUES(1), (2) SELECT @result = @result + CAST( Id AS VARCHAR(10)) + ',' FROM @table SELECT @result --— output: 1,2, -------same With distinct SET @result = '' SELECT DISTINCT @result = @result + CAST( Id AS VARCHAR(10)) + ',' FROM @table SELECT @result --— expected output: 1,2, actual output: 2, why? 

Быстрый просмотр плана выполнения (и некоторых игр) показал мне, что SELECT DISTINCT также сортируется, и поэтому вы получаете максимальный id.

Например, в

 INSERT @table VALUES(1),(2),(1),(4), (2), (3) 

Я бы получил результат 4 (потому что 4 – самый высокий).

Решение? Поместите «отчетливый» в дополнительный запрос следующим образом:

 SELECT @result = @result + CAST( Id AS VARCHAR(10)) + ',' FROM (SELECT DISTINCT id FROM @table) Q 

В результате: 1, 2, 3, 4,

  • SQL Server 2005: обновлять строки в указанном порядке (например, ORDER BY)?
  • SQL JOIN с использованием конкатенированного поля
  • Как конкатенировать значения строк для использования в предложении WHERE запроса T-SQL
  • Правильное количество пробелов с именем конкатенированного лица в SQL Server
  • Рекурсивно конкатентные столбцы в sql
  • Как объединить данные из двух столбцов DateTime (SQL Server)?
  • SQL Query объединить два столбца во время Inner JOIN
  • Несколько строк в одном столбце SQL Server
  • Sql Server Split и Concatenation
  • Как «Implode» (de-normalize / concat) несколько столбцов в один столбец?
  • Почему SQL Server игнорирует vaules в конкатенации строк, когда указано предложение ORDER BY
  • Interesting Posts

    Преобразование CASE WHEN в IIF

    SQL – настройка параметров для значения столбца по умолчанию в таблице

    SQL Server: порядок полного внешнего соединения?

    Почему этот оператор UPDATE для varbinary (max) на SQL Server настолько медленный?

    DB2 эквивалент SQL-сервера TRIGGER_NESTLEVEL ()?

    Как я могу создать многоугольники географии SQL Server определенного размера?

    Команда для остановки запросов в SQL Server

    Почему оператор Transact-SQL не должен группироваться вместе в одной партии?

    SQL Server 100% Использование ЦП – одна база данных показывает высокую загрузку процессора, чем другие

    SQL Server: отображение различий в столбцах между двумя строками

    Внутренняя структура кластерного индекса

    Почему обновление кластерного индекса моего представления, когда базовые данные, которые он ссылается, не изменяется?

    Манипулирование пространствами XMLNames

    Перенос базы данных SQL Server в Sybase

    Найти несколько обновленных столбцов в триггере

    Давайте будем гением компьютера.