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

Откуда:
Сообщений: 50
Добрый день, всем !
Кто подскажет. Мне нужно выполнить запрос, запрос сложный, работает правильно для одной строчки.
Все строчки я могу получать из другого запроса.

Необходимо как то для каждой строчки полученной в запросе сырье выполнить запрос ресурсы.
Сырье
1. select number from S (1,2,3,4,5 и тд)
Ресурсы
2. select value from R
where number = 1
и
select value from R
where number = 2
и
select value from R
where number = 3
и тд.
То есть строк должно получится как в запросе 1.

Может здесь табличные переменные или курсоры.
PS ХП создавать нет прав.

Спасибо.
12 мар 17, 01:04    [20285954]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значению переменной массив и выполнить для каждого эл другой запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Почитайте про join.

Сообщение было отредактировано: 12 мар 17, 01:12
12 мар 17, 01:11    [20285962]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значению переменной массив и выполнить для каждого эл другой запрос  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
ну или outer apply
12 мар 17, 01:14    [20285965]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значению переменной массив и выполнить для каждого эл другой запрос  [new]
Деддддддддд
Member

Откуда:
Сообщений: 50
Может я не так написал.
В общем, необходимо на основании входного параметра дата, во временной ХП. На постоянную нет прав
получить результат запроса

Запрос 1.
select number from R
where date between dateadd(month, -1, getdate) and getdate

То есть у меня будет допустим 5 номеров. Возможно это называется записать результат переменную вывода
( но тогда не понятно как их перебирать в цикле, если речь о временной таблице )

И для каждого из этих номеров получить результат запроса в виде таблицы

select
кучапростостолбцов,
нескольковложенныхподзапросов =
select(вложенные столбцы from T
where number = @То что получилось в запросе 1 для каждого номера)
From T
where number = @То что получилось в запросе 1 для каждого номера

Вот такой злобный запрос хочу написать
12 мар 17, 21:28    [20287479]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значению переменной массив и выполнить для каждого эл другой запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Деддддддддд
Вот такой злобный запрос хочу написать
Ну так пишите. И да, 20285962.
12 мар 17, 21:46    [20287533]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значению переменной массив и выполнить для каждого эл другой запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Деддддддддд
PS ХП создавать нет прав.
Вы уже 2 раза ХП упомянули.
Между тем, всё, что можно сделать в ХП, точно так же делается без создания ХП.
ХП - это просто сохранение запроса, что бы его вызывать коротким именем, но никакой дополнительной функциональности она не даёт.

Деддддддддд
И для каждого из этих номеров получить результат запроса в виде таблицы

select
кучапростостолбцов,
нескольковложенныхподзапросов =
select(вложенные столбцы from T
where number = @То что получилось в запросе 1 для каждого номера)
From T
where number = @То что получилось в запросе 1 для каждого номера

Вот такой злобный запрос хочу написать
Не вижу никаких препятствий. Вот как тут описываете, так и пишите запрос.
12 мар 17, 22:13    [20287589]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значению переменной массив и выполнить для каждого эл другой запрос  [new]
Деддддддддд
Member

Откуда:
Сообщений: 50
alexeyvg,
в целом я написал вот такую заготовку.
SELECT TOP 1
i.NUM
,(select TOP 1 com
FROM TableI i full join Table c on i.NUM = c.NUM
where
c.DATE =
(select min(c.DATE) from TableI i full join Table c on i.NUM = c.NUM
where i.NUM IN(

(SELECT [REQUEST_NUM]
FROM i
WHERE

i.DATE BETWEEN dateadd(hour, -24, getdate()) AND GETDATE())

В обоих таблицах есть столбец num.
Проблема в том, что больше одной строчки в подзапросе я не могу получить. А это одна строчка берет минимальную дату из всех номеров, а я бы хотел, что бы она выбирала показатель com из каждой строки по минимальной дате, а не из всех строк.

Вот .
12 мар 17, 22:37    [20287643]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значению переменной массив и выполнить для каждого эл другой запрос  [new]
Деддддддддд
Member

Откуда:
Сообщений: 50
Всем спасибо.
Тему можно закрывать я нашел как сделать.
12 мар 17, 22:38    [20287649]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить