Тип function*
выглядит как функция генератора для процессов, которые можно повторить. C # имеет такую функцию, как «yield return» , см. 1 и , см. 2
По сути, это возвращает каждое значение по одному на все, что итерация этого функция, поэтому их пример использования показывает его в цикле стиля foreach.
Ну, я все равно закончил; вау это какой-то ужасный / безумный 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;