Реферат: Новые возможности T-SQL в MS SQL Server 2005

SELECT P.Model, DATEPART(year, O.[Date]) AS [Year], O.Quantity FROM Orders O

INNER JOIN Products P ON P.ProductID = O.ProductID

) AS C

GROUP BY C.Model

Читатель, даже неопытный в программировании на T-SQL, наверняка отметит сложность работы с кодом, написанный без использования функции PIVOT, в случае более сложных запросов. В то же время, PIVOT является лишь синтаксической оболочкой для приведенной выше конструкции. Посмотрев планы исполнения примера, приведенного выше и примера, с использованием функции PIVOT, можно убедиться в их идентичности.

Функция UNPIVOT выполняет процедуру обратную PIVOT, «разворачивая» обратно таблицу данных, подвергшихся «обработке» функцией PIVOT , в исходное состояние. Положим, что для ведения статистики имеется следующая таблица

CREATE TABLE [Statistics](

[Model] [nvarchar](32) NOT NULL,

[2005] [int] NOT NULL,

[2004] [int] NOT NULL

)

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

SELECT * FROM [Statistics]

UNPIVOT(TotalQuantity FOR [Year] IN ([2005], [2004])) AS PVT

Результатом выполнения будет таблица трех из столбцов: Model, TotalQuantity, Year.

Model TotalQuantity Year

------------------------------------------

A75-S206 10 2004

A75-S206 24 2005

M40-110 17 2004

M40-110 38 2005

Обновленный оператор TOP

Оператор TOP широко используется для ограничения числа строк, возвращаемых командой SELECT. В предыдущих версиях SQL Server, оператор TOP принимал в качестве параметра только константу. В SQL Server 2005 параметром этого оператора может быть переменная, выражение или вложенный вопрос.

Например, следующим образом можно осуществить выборку такого числа моделей некоторого производителя, которое соответствует среднему количеству моделей каждого производителя в таблице Products:

SELECT TOP (SELECT AVG(AvgNum) * FROM

(SELECT COUNT(*) AS AvgNum FROM Products GROUP BY BrandID) AS NumTable) P.Model FROM Products P

Для использования в качестве параметра оператора TOP переменной, выражения или вложенного запроса необходимо заключать ее в круглые скобки:

SELECT TOP (@Num) * FROM ИмяТаблицы

При использовании константы, скобки не обязательны в команде SELECT, но обязательны при использовании с командами, изменяющими данные, например:

DELETE TOP(10) FROM Orders ORDER BY Date DESC

В предыдущих версиях SQL Server для использования переменной в качестве параметра оператора TOP приходилось прибегать к сложным конструкциям или динамическому созданию запроса.

К-во Просмотров: 552
Бесплатно скачать Реферат: Новые возможности T-SQL в MS SQL Server 2005