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

Откуда: Минск
Сообщений: 407
Есть две таблицы.
В Таблице1 колонки: номер заявки, дата заявки
В Таблице2 колонки: заявка (это есть номер заявки из Таблицы1), код товара, количество товара

Реальную ситуацию для простоты упростил.
Нужно зная код товара и минимальную дату заявки вывести сумму количеств товара.
Не могу сообразить как сделать запрос, помогите пожалуйста. Спасибо
11 дек 13, 11:43    [15275838]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Slash232
Не могу сообразить как сделать запрос,

Руками написать SELECT с JOIN. И использовать функцию SUM
11 дек 13, 11:47    [15275870]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
Slash232,

join + count(*) ?
11 дек 13, 11:48    [15275880]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Slash232
Member

Откуда: Минск
Сообщений: 407
select sum([Таблица2].[Количество товара]) from [Таблица2]
left outer join [Таблица1] on [Таблица1].[Номер заявки] = [Таблица2].[Заявка]
where [Таблица1].[Код товара] = 551

а как внести ограничение что суммирует только то количество в котором дата заявки больше например 11.12.2013 ???
11 дек 13, 11:52    [15275925]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
TPAKTOPA
Member

Откуда: Солнечная Болгария
Сообщений: 585
Что то такое
 select tovar.name , Sum(Tovar.Quantity)
  inner join tovar on tovar.zakaz_id = zakaz.zakaz_id and  tovar.tovar_id = 1
 from zakaz
 where zakaz.data > '1.1.2013'
group by tovar.name
11 дек 13, 11:55    [15275949]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
Slash232
а как внести ограничение что суммирует только то количество в котором дата заявки больше например 11.12.2013 ???

Так же, как вы наипсали ограничение для "зная код товара"
11 дек 13, 11:55    [15275950]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Slash232
Member

Откуда: Минск
Сообщений: 407
СПАСИБО РАЗОБРАЛСЯ.

Вопрос № 2: не связан с 1 вопросом.
Как получить только первую запись из набора записей в запросе? Top не подойдёт т.к. в самом запросе все равно получает несколько записей. Где то видел агрегирующую функцию First но она не фурычит у меня почемуто.
11 дек 13, 15:41    [15277637]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
First() это из акцесса, здесь MIN() возможно поможет
11 дек 13, 15:43    [15277655]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Slash232
Member

Откуда: Минск
Сообщений: 407
Konst_One, нет у меня две колонки дата и количество
Мне необходимо выбрать не зависимо от даты и количества последнюю запись в самом запросе
11 дек 13, 15:53    [15277716]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Slash232
Member

Откуда: Минск
Сообщений: 407
Взять значение количества и дату из этой записи и использовать их для дальнейшего использования в этом же запросе. Просто у меня в запросе есть колонка с суммой и получается результат = эта сумма умноженная на количество записей
11 дек 13, 15:56    [15277730]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Slash232
Konst_One, нет у меня две колонки дата и количество
Мне необходимо выбрать не зависимо от даты и количества последнюю запись в самом запросе

и чем вам
select top 1
...
order by
не подходит?
11 дек 13, 15:56    [15277731]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Slash232
Member

Откуда: Минск
Сообщений: 407
Сам запрос:
SELECT [Positions].[Код товара]
,[DepartmentsCounting].[Дата] as [Дата последнего подсчёта]
,[DepartmentsCounting].[Количество] as [Последний подсчёт]
,sum([BidsInDetails].[Количество]) as [Минус заявок]
,sum([DepartmentsTransfer].[Количество]) as [Минус передач]
,count([DepartmentsCounting].[Индекс подсчёта])
FROM [Positions]
left outer join [DepartmentsCounting] on [DepartmentsCounting].[Код товара] = [Positions].[Код товара] and [DepartmentsCounting].[Отдел] = 1 and [DepartmentsCounting].[Код родителя] is null and [DepartmentsCounting].[Состояние операции] = 2 and [DepartmentsCounting].[Дата] = (select max([DepartmentsCounting].[Дата]) from [DepartmentsCounting] where [DepartmentsCounting].[Код товара] = [Positions].[Код товара] and [DepartmentsCounting].[Код родителя] is null and [DepartmentsCounting].[Состояние операции] = 2 and [DepartmentsCounting].[Отдел] = 1)
left outer join [BidsInDetails] on [BidsInDetails].[Код товара] = [Positions].[Код товара]
left outer join [Bids] on [Bids].[Индекс заявки] = [BidsInDetails].[Заявка] and [Bids].[Дата] >= [DepartmentsCounting].[Дата]
left outer join [DepartmentsTransfer] on [DepartmentsTransfer].[Код товара] = [Positions].[Код товара] and [DepartmentsTransfer].[Дата] >= [DepartmentsCounting].[Дата] and [DepartmentsTransfer].[Состояние] = 2 and [DepartmentsTransfer].[От кого] = 1
where [Positions].[Код товара] = 551

group by [Positions].[Код товара] --\\\\
,[DepartmentsCounting].[Дата] --\\\\
,[DepartmentsCounting].[Количество] --\\\\

Записей с [Дата последнего подсчёта] и [Последний подсчёт] получается 3, соответственно результат [Минус передач] получается умноженный на 3
Подскажите в чем недопонимаю?
11 дек 13, 15:58    [15277744]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
DmitryVT
Member

Откуда: VRN
Сообщений: 192
Пронумеруйте результат вашего запроса и выберите максимальный номер
11 дек 13, 16:03    [15277774]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Slash232
Member

Откуда: Минск
Сообщений: 407
DmitryVT, если можно пример
11 дек 13, 16:04    [15277784]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
DmitryVT
Member

Откуда: VRN
Сообщений: 192
http://msdn.microsoft.com/ru-ru/library/ms186734.aspx
11 дек 13, 16:09    [15277811]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Slash232
Konst_One, нет у меня две колонки дата и количество
Мне необходимо выбрать не зависимо от даты и количества последнюю запись в самом запросе


а как вы определяете "последнюю"? вы в курсе что без order by она случайна?
12 дек 13, 10:10    [15280773]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить