SQL Server 2008: столбец сводных данных без обходного пути для функции агрегирования - PullRequest
0 голосов
/ 13 мая 2011

Да, я знаю, этот вопрос задавался МНОГИЕ раз, но после прочтения всех постов я обнаружил, что не было ответа, который соответствовал бы моим потребностям.Итак, вот мой вопрос.Я хотел бы взять столбец значений и объединить их в строки по 6 столбцов.

I want to take this......    And turn it into this.......................
G                            Letter  Date    Code  Ammount   Name       Account 
081278                       G       081278   12   00123535  John Doe   123456
12
00123535
John Doe
123456

У меня есть 110000 значений в этом одном столбце в одной таблице с именем TempTable.Мне нужно, чтобы все значения отображались, потому что каждая строка является сущностью для себя.Например, существует одна уникальная запись для всех столбцов Письмо, Дата, Код, Сумма, Имя и Учетная запись.Я понимаю, что требуется агрегатная функция, но есть ли обходной путь, который позволит мне получить желаемый результат?

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Просто используйте МАКС. Агрегат

Если одна строка = один столбец (на группу из 6 строк), то MAX одного значения = это значение строки.

Однако данных, которые вы разместили, недостаточно. Я не вижу ничего, чтобы:

  • свяжите 6 строк на группу
  • различают, является ли строка "Буква" или "Имя"

Не существует неявного порядка или номера строк, на которые можно опираться при создании групп

0 голосов
/ 13 мая 2011

К сожалению, максимальное число столбцов в операторе выбора SQL 2008 равно 4096 согласно Максимальная емкость MSDN .

Вместо использования сводной диаграммы вы можете использовать динамический SQL, чтобы получить то, что вам нужноделать.

Declare @SQLColumns nvarchar(max),@SQL nvarchar(max)
select @SQLColumns=(select '''+ColName+'''',' from TableName for XML Path(''))
set @SQLColumns=left(@SQLColumns,len(@SQLColumns)-1)

set @SQL='Select '+@SQLColumns
exec sp_ExecuteSQL @SQL,N''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...