CROSS APPLY / OUTER APPLY стр. 3 |
||
В заключение давайте рассмотрим пример задачи, которая часто встречается на практике, а именно, задачи расположения в столбец значений из строки таблицы. Для конкретизации сформулируем задачу таким образом. Для таблицы Laptop представить информацию о продуктах в три столбца: code, название характеристики (speed, ram, hd или screen), значение характеристики. Метод решения состоит в использовании конструктора таблицы, куда с помощью CROSS APPLY будут передаваться значения столбцов. Давайте разберем этот метод подробно. Конструктор таблицы может использоваться не только в операторе INSERT, но и для задания таблицы в предложении FROM, например,
Эта таблица у нас называется Spec и содержит два столбца - name (символьные строки) и value (числа). Давайте теперь включим эту таблицу в оператор CROSS APPLY, который будет соединять каждую строку из таблицы Laptop с четырьмя строками из сгенерированной таблицы:
Собственно, нам осталось воспользоваться основным свойством оператора CROSS APPLY - коррелированностью табличного выражения - и заменить единички в столбце value на имена столбцов из соединяемой таблицы:
|