Ну, я все равно закончил; вау это какой-то ужасный / безумный 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;
Пространство имен - это вещь .Net, распространенная во многих промышленных языках, просто способ организации сред и предотвращения конфликтов имен между различными библиотеками. И вы, и я можем определить тип «Foo» и использовать их оба в проекте, при условии, что они находятся в разных пространствах имен (например, NS1.Foo и NS2.Foo). Пространства имен в .Net содержат типы.
Модуль - это элемент F #, он примерно аналогичен «статическому классу» ... это объект, который может содержать значения и функции, связанные с символами, а также типы (примечание что пространства имен не могут напрямую содержать значения / функции, пространства имен могут содержать только типы, которые сами могут содержать значения и функции). На вещи внутри модуля можно ссылаться через «ModuleName.Thing», это тот же синтаксис, что и для пространств имен, но модули в F # также могут быть «открыты» для обеспечения неквалифицированного доступа, например
open ModuleName
...
Thing // rather than ModuleName.Thing
(EDIT: пространства имен также могут быть открыты аналогичным образом, но тот факт, что модули могут содержать значения и функции, делает открыв более «интересный» модуль, в котором вы можете получить значения и функции, например «cos», то есть имена, которые вы можете использовать напрямую, тогда как в других .Net-языках вам, как правило, всегда приходится его квалифицировать, например «Math». .cos ").
Если вы набираете код на« верхнем уровне »в F #, этот код неявно входит в модуль.
Надеюсь, что это поможет, это довольно открытый вопрос. :)
но тот факт, что модули могут содержать значения и функции, делает открытие модуля более «интересным», поскольку вы можете получить значения и функции, например «cos», то есть имена, которые вы можете использовать напрямую, тогда как в других языках .Net вы Обычно это всегда нужно квалифицировать, например, «Math.cos»).Если вы вводите код на «верхнем уровне» в F #, этот код неявно входит в модуль.
Надеюсь, что это немного помогает, это довольно открытый вопрос. :)
но тот факт, что модули могут содержать значения и функции, делает открытие модуля более «интересным», поскольку вы можете получить значения и функции, например «cos», то есть имена, которые вы можете использовать напрямую, тогда как в других языках .Net вы Обычно это всегда нужно квалифицировать, например, «Math.cos»).Если вы вводите код на «верхнем уровне» в F #, этот код неявно входит в модуль.
Надеюсь, что это немного помогает, это довольно открытый вопрос. :)
На верхнем уровне 'в F # этот код неявно входит в модуль.Надеюсь, что это поможет, это довольно открытый вопрос. :)
На верхнем уровне 'в F # этот код неявно входит в модуль.Надеюсь, что это поможет, это довольно открытый вопрос. :)