Wendelius
Во-первых, один SQL-запрос возвращает фиксированное количество столбцов. Это означает, что вы либо должны знать количество столбцов в результате и строить запрос на основе этого, либо вам нужно построить запрос динамически после получения информации о том, сколько столбцов вам нужно.
В обоих случаях один из способов-использовать PIVOT. Взгляните на следующие примеры:
- Простой способ использования Pivot в SQL-запросе[^]
- Динамический сводный запрос в SQL Server[^]
ДОПОЛНЕНИЕ
Если я правильно понимаю логику, которую вы описали, вы можете просто включить таблицу 8 раз в свой запрос, используя внешнее соединение. Например что-то вроде
SELECT a.fk_PordId,
a.fk_Transport,
a.fk_Destination,
b.fk_Transport,
b.fk_Destination,
c.fk_Transport,
c.fk_Destination
-- continue to complete 8 tables
FROM MyTableName a
LEFT OUTER JOIN MyTableName b
ON ( b.fk_PordId = a.fk_PordId
AND b.fk_id > a.fk_id
AND NOT EXISTS (SELECT 1
FROM MyTableName b1
WHERE b1.fk_PordId = b.fk_PordId
AND b1.fk_id > a.fk_id
AND b1.fk_id < b.fk_id))
LEFT OUTER JOIN MyTableName c
ON ( c.fk_PordId = b.fk_PordId
AND c.fk_id > b.fk_id
AND NOT EXISTS (SELECT 1
FROM MyTableName c1
WHERE c1.fk_PordId = c.fk_PordId
AND c1.fk_id > b.fk_id
AND c1.fk_id < c.fk_id))
-- continue to complete 8 tables
WHERE NOT EXISTS (SELECT 1
FROM MyTableName a1
WHERE a1.fk_PordId = a.fk_PordId
AND a1.fk_id < a.fk_id)
Member 10017141
Спасибо, что предложили ссылки, но это не решает мою проблему.
моя фактическая таблица выглядит следующим образом:
fk_id fk_PordId fk_Transport fk_Destination
1 80990 с Вт
2 80990 Z A
3 81230 f A
4 81230 s z
я должен исправить ряд coulmns. мне нужно 8 столбцов fk_Transport и 8 столбцов fk_Destination. это означает, что максимальный тип значений в обоих кулонах равен 8.
мне нужен такой результат:
fk_PordId fk_Transport fk_Destination fk_Transport fk_Destination
80990 ь ю з а
81230 f A s z
это означает, что я хочу показать для одного fk_ProdId все типы fk_Transporttype и fk_Destination(до 8 репитив-столбцов) в одной строке, которые тоже упорядочиваются по fk_id.