sudhakarthikeyan Ответов: 1

Как установить строку в столбец с помощью pivot в SQL server


Farmerid Name     Farm_detailsdata

      1     TestA    Suggestion:Yes,Rating:Good,Attend:Yes
      2     TestB    Suggestion:Yes,Rating:Good


мне нужен вывод bleow следующим образом, из приведенного выше sql-запроса, как изменить строку на столбец в sql server с помощью Pivot


Farmid Name        Suggestion    Rating     Attend

1      Test          Yes         Good         Yes
2      TestB         Yes         Good          -


Что я уже пробовал:

SELECT A.farmer_id,B.firstname + '' '' + B.lastname + '' '' + B.surname 
as farmer_name,A.farm_detailsdata 
FROM dbo.tbl_farmer_farmdetails_' + @originname + ' A 
INNER JOIN dbo.tbl_farmerregistration_' + @originname + ' B ON B.farmerctscode = A.farmer_id 
INNER JOIN dbo.tbl_villagemaster_' + @originname + ' C ON C.villageid = B.village 
WHERE B.farmerseason = '2017'

Richard Deeming

Репост
https://www.codeproject.com/Questions/1241432/How-to-split-rows-in-excel[^]
https://www.codeproject.com/Questions/1241546/How-to-set-row-entry-as-column-header-from-excel-i[^]
https://www.codeproject.com/Questions/1241561/How-to-set-row-entry-as-column-in-SQL-server[^]

Если вы хотите обновить свой вопрос, чтобы добавить недостающую информацию, Нажмите зеленую ссылку "улучшить вопрос" и отредактируйте свой вопрос. НЕ опубликуйте свое обновление как новый вопрос!

1 Ответов

Рейтинг:
0

Maciej Los

Прежде всего: это выглядит как плохой дизайн базы данных.

Вы должны разделить строку (Suggestion:Yes,Rating:Good,Attend:Yes) на части (столбцы) через запятую [,] затем двоеточием [:].

Для SQL Server 2016 можно использовать: STRING_SPLIT (Transact-SQL) | Microsoft Docs[^]
Для более ранних версий MS SQL Server необходимо создать пользовательскую функцию (например: Преобразование данных, разделенных запятыми в столбце, в строки для выбора[^]) или использовать КТОС[^]:
получите 2-ю и 3-ю строки, разделив длинную строку с помощью T-Sql[^]
Как разбить строку с помощью разделителя в Sql[^]
как разделить строку с помощью sql server[^]