Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
WHERE КодВалюты IN ('USD', 'EUR')
SELECT @Код AS [Код товара], @Имя AS Наименование, @Цена AS [Цена товара] GO Ç Здесь переменные @Код, @Имя, @Цена получили значения соответствующих полей последней строки набора данных, выбираемого командой SELECT (сам набор данных на экран не выводится). Поэтому, если, например, необходимо сохранить в переменных сначала сведения о товаре с наибольшей, а затем – с наименьшей ценой применительно к кодам валют USD и EUR, то необходимо выполнить следующую последовательность команд: É DECLARE @Код INT, @Имя VARCHAR(50), @Цена MONEY -- Выборка данных из таблицы Товар с сортировкой строк -- по столбцу Цена в порядке возрастания SELECT @Код = КодТовара, @Имя = Наименование, @Цена = Цена FROM Товар WHERE КодВалюты IN ('USD', 'EUR') ORDER BY Цена -- Вывод данных о товаре с наибольшей ценой SELECT @Код AS [Код товара], @Имя AS Наименование, @Цена AS [MAX цена товара]
-- Выборка данных из таблицы Товар с сортировкой строк по столбцу Цена -- в порядке убывания SELECT @Код = КодТовара, @Имя = Наименование, @Цена = Цена FROM Товар WHERE КодВалюты IN ('USD', 'EUR') ORDER BY Цена DESC -- DESC указывает на убывающий порядок сортировки -- Вывод данных о товаре с наименьшей ценой SELECT @Код AS [Код товара], @Имя AS Наименование, @Цена AS [MIN цена товара] GO Ç
Можно определить также среднюю цену товаров: É DECLARE @Цена MONEY SELECT @Цена = AVG(Цена) FROM Товар WHERE КодВалюты IN ('USD', 'EUR') -- Вывод средней цены товаров SELECT @Цена AS [AVG цена товаров] GO Ç
Пример. Пусть необходимо определить наименование товара, по которому был наибольший спрос за последние N дней. Один из вариантов решения этой задачи заключается в выполнении следующей последовательности шагов. 1). Объявляем переменные, требуемые для решения данной задачи: É DECLARE @Name VARCHAR(50), @Code INT, @Quantity NUMERIC(12,3), @N INT 2). Задаем значение интервала в днях: SET @N = 60 3). Выполняем выборку данных с группировкой по кодам товаров и подсчетом для каждой группы суммарного количества заказанного товара (т.е. величины спроса). При этом результирующий набор данных будем сортировать в порядке возрастания величины спроса и, следовательно, последняя его строка будет задавать товар с наибольшим спросом. Результат выполнения этой команды на экран не выдается, а вместо этого данные последней строки сохраняются в переменных @Code и @Quantity:
SELECT @Code = КодТовара, @Quantity = SUM(Количество) FROM Заказ WHERE ДатаЗаказа BETWEEN GetDate() - @N AND GetDate() GROUP BY КодТовара ORDER BY SUM(Количество) 4). По найденному в предыдущем пункте коду товара с наибольшим спросом находим соответствующее ему наименование товара: SELECT @Name = Наименование FROM Товар WHERE КодТовара = @Code
5). Выдаем найденный результат на экран: SELECT @Name AS [Наименование товара], @Quantity AS [Итоговое кол-во], @N AS [Временной интервал] GO Ç Примечание. Все команды, рассмотренные на этих пяти шагах, выполняются в рамках одного пакета (поясняющий текст нужно удалить или закомментировать).
Программный код на языке Transact-SQL может включать в себя также битовые и логические операторы, операторы перехода (GOTO) и приостанова (WAITFOR), команды организации ветвлений (IF, CASE) и циклов (WHILE), операторные скобки (BEGIN…END) и др. (см. [1], стр. 1057 – 1087).
Временные таблицы. Они создаются в системной базе данных tempdb и бывают двух типов: локальные и глобальные. Локальные временные таблицы видны только из того соединения, в котором были созданы, и автоматически уничтожаются при закрытии этого соединения. Глобальные временные таблицы также уничтожаются при закрытии соединения, в котором были созданы, однако, когда они существуют, то видны и из любых других соединений. Это предоставляет удобный механизм для обмена данными между различными приложениями, например, между различными копиями хранимых процедур (одна и та же хранимая процедура, запускаемая различными пользователями, может обращаться к глобальной временной таблице для получения информации). Имена локальных временных таблиц начинаются символом «#», а глобальных – двумя такими символами. Примеры создания и использования локальных временных таблиц: É CREATE TABLE #Goods ( КодТовара INT PRIMARY KEY,
|
|||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 154; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.84.171 (0.007 с.) |