Объединение нескольких строк в столбце при переносе динамических столбцов в строки

Тип function* выглядит как функция генератора для процессов, которые можно повторить. C # имеет такую ​​функцию, как «yield return» , см. 1 и , см. 2

По сути, это возвращает каждое значение по одному на все, что итерация этого функция, поэтому их пример использования показывает его в цикле стиля foreach.

1
задан priya amali 6 March 2019 в 07:23
поделиться

1 ответ

Ну, я все равно закончил; вау это какой-то ужасный / безумный SQL:

 DECLARE @SQL nvarchar(MAX);
 SET @SQL = N'SELECT T.FirstName,' + NCHAR(10) +
            STUFF((SELECT CONCAT(',',NCHAR(10),N'       STUFF((SELECT CONCAT('','',ShiftName)' + NCHAR(10) +
                                               N'              FROM T_Test S' + NCHAR(10) +
                                               N'              WHERE S.Firstname = T.FirstName' + NCHAR(10) +
                                               N'                AND S.ScheduleDate = ' + QUOTENAME(CONVERT(varchar(8),T.ScheduleDate,112),N'''')) + NCHAR(10) +
                                               N'              FOR XML PATH(N''''),TYPE).value(''.'',''varchar(MAX)''),1,1,N'''') AS ' + QUOTENAME(ScheduleDate)
                   FROM dbo.T_Test T
                   GROUP BY T.ScheduleDate
                   FOR XML PATH(N''),TYPE).value('.','varchar(MAX)'),1,2,N'') + NCHAR(10) +
            N'FROM T_Test T' + NCHAR(10) + 
            N'GROUP BY T.FirstName' + NCHAR(10) +
            N'ORDER BY T.FirstName;';

PRINT @SQL
EXEC sp_executesql @SQL;
0
ответ дан Larnu 6 March 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: