values ( 1, N'Россия' ), ( 2, N'США' ), ( 3, N'Германия' )
--Добавим 5 стран, используя синтаксис SQL Server 2008
create table dbo.Countries ( CountryID int, Country nvarchar(255) )
--Создаю тестовую таблицу стран
--для демонстрации возможностей оператора CrossApply
Сегодня я хочу рассказать более подробно об операторе , а конкретнее о его типе CROSS APPLY. Этот оператор появился впервые в SQL Server 2005, но к сожалению многие так и не научились им пользоваться, возможно это из-за того, что в BOL (SQL Server Books Online) этот оператор плохо описан и имеет очень "сухие" примеры его использования. В этой статье я покажу несколько интересных демонстраций, где этот оператор может пригодиться. Основная фича оператора заключается в том, что APPLY позволяет вызывать табличную функцию для каждой строки, возвращаемой внешним табличным выражением запроса. Именно этот пример есть в BOL. Оператор CROSS APPLY возвращает только строки из внешней таблицы, которые создает результирующий набор из возвращающего табличное значение функции. Оператор OUTER APPLY возвращает и строки, которые формируют результирующий набор, и строки, которые этого не делают, со значениями NULL в столбцах, созданных возвращающей табличное значение функцией. Для демонстрации некоторых фич оператора APPLY, создадим тестовую БД и пару таблиц:
Всё об MS SQL Server 7.0/2000/2005/2008/2008R2/2012 на русском
T-SQL.RU | Чудесный оператор CROSS APPLY
Комментариев нет:
Отправить комментарий