Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 запрос sql (INSERT)  [new]
ОлесяТкаченко
Member

Откуда:
Сообщений: 27
Создаю хранимую процедуру, входной параметр: @period

В БД есть несколько таблиц ("клиенты", "сотрудники", "поставщики" и т.д.)
Есть таблица "Информация" со столбцами: период,кол-во клиентов, кол-во поставщиков, кол-во сотрудников

С помощью запроса необходимо посчитать количество клиентов, сотрудников, поставщиков за определенный период и добавить полученные данные в таблицу "Информация"
Знаю, как реализовать данный запрос, если бы нужно было вставить одну запись (к примеру, количество поставщиков):

INSERT DopolnitInfo (Postavchiki)
SELECT COUNT(Postavchiki.KodPostavchik)
FROM Postavchiki
WHERE @period<Postavchiki.KonecDogovora

Как изменить данный запрос таким образом, чтобы обрабатывались и вставлялись данные для всех одновременно? (чтобы считалось кол-во сотрудников, клиентов, поставщиков и полученные данные вставлялись в новую таблицу в качестве столбцов)
11 май 12, 00:22    [12533490]     Ответить | Цитировать Сообщить модератору
 Re: запрос sql (INSERT)  [new]
hallabud
Member

Откуда: Киев
Сообщений: 245
Объявить в процедуре переменные и присвоить им те значения, которые нужны.
11 май 12, 00:46    [12533547]     Ответить | Цитировать Сообщить модератору
 Re: запрос sql (INSERT)  [new]
ALOTE
Member

Откуда:
Сообщений: 1748
Ну самое простое что сразу в голову лезет, работает только при наличие в таблице поля identity? хотя есть варианты и получше

declare @NewID as int --если идентификатор интеджеровый

INSERT DopolnitInfo (Postavchiki)
SELECT COUNT(Postavchiki.KodPostavchik)
FROM Postavchiki
WHERE @period<Postavchiki.KonecDogovora
set @NewId=@@IDENTITY
--Если нет триггеров на инсерте
update DopolnitInfo  set Clients=cid 
from(
select count(Clients.kod)
from Clients
where @period<Clients.KonecDogovora)
where DopolnitInfo .id =@NewId
-- и т.д.
11 май 12, 01:05    [12533609]     Ответить | Цитировать Сообщить модератору
 Re: запрос sql (INSERT)  [new]
ОлесяТкаченко
Member

Откуда:
Сообщений: 27
ALOTE, спасибо!

Сделала так, как Вы предложили, в UPDATE чуть по-другому

...

UPDATE DopolnitInfo set Sotrudniki=(select count(Sotrudniki.KodSotrudnika)
from Sotrudniki
where @period2<Sotrudniki.DataUvolneniya)
where DopolnitInfo.id=@NewId

и т.д...

Получилось!
11 май 12, 11:28    [12534910]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить