Ваш вопрос не совсем ясен, но мой волшебный хрустальный шар говорит мне, что вы можете искать что-то вроде этого:
SELECT p.*
FROM
(
SELECT o.[name]
,CONCAT('Column',ROW_NUMBER() OVER(ORDER BY o.object_id)) AS ColumnName
FROM sys.objects o
--WHERE ...
) t
PIVOT
(
MAX([name]) FOR ColumnName IN(Column1,Column2,Column3 /*add as many as you need*/)
) p;
Идея вкратце:
The SELECT
вернет список значений. В этом примере я использовал sys.objects
и возвращал объект name
. Количество строк в этом списке будет зависеть от условия WHERE
, но не должно превышать 10 (в вашем случае).
В приведенном выше примере я использую CONCAT()
для вычисления имени столбца путем добавления ROW_NUMBER()
.
Это вычисленное имя столбца можно использовать в PIVOT
.
Если ваш список короче 10 строк, вы просто получите NULL.
Но вы должны быть осторожны, если ваш список может быть длиннее 10. В этом случае строки> 10 будут невидимы без какого-либо уведомления ...