|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
pmb
19.09.11
✎
16:37
|
Уже часа 3 не могу придумать как написать запрос.
Дана выборка, в которой есть колонки Номенклатура, Склад и Количество. Одна и та же номенклатура может быть на нескольких складах. Один склад всегда основной Нужно получить для каждой номенклатуры одну запись в выборке, если она есть на основном складе - то количество этого склада, если ее на основном нет - то по любому первому складу. |
|||
1
and2
19.09.11
✎
16:40
|
ну так выбери всю номенклату что есть на основном складе.
и остальную, которой нет в предыдущей выборке. пакетный запрос тебе в помощь. |
|||
2
pmb
19.09.11
✎
16:41
|
это я уже придумал. Хочу что-нить хитрее найти ;)
|
|||
3
Megas
19.09.11
✎
16:43
|
(2) Зачем ?
Много складов? Можно сделать так =) В цикле текст запроса дописать чтоб там было Выбор когда Склад = &Основоной тогда Количество иначе 0 конец как Основной Выбор когда Склад = &Склад2 тогда Количество иначе 0 конец как склад2 и тд ... для каждого склада. |
|||
4
Beduin
19.09.11
✎
16:44
|
Выбрать Номенклатура,
Выбор КОГДА ОстатокОсновного > 0 Тогда ОстатокОсновного ИНАЧЕ ОстатокПрочих Конец (Выбрать Номенклатура, Склад, Остаток КАК ОстатокОсновного, 0 ИЗ ОстаткиНоменклатуры(Склад = &ОсновнойСклад) ОБЪЕДИНИТЬ ВСЕ Выбрать Номенклатура, Склад, 0, Остаток КАК ОстатокПрочих ИЗ ОстаткиНоменклатуры(Склад В &СписокПрочихСкладов) )КАК ЗапросПоСкладам |
|||
5
pmb
19.09.11
✎
17:01
|
(4) так наверное и останется. Просто хотел как-нибудь с группировками и итогами запрос написать.
|
|||
6
Megas
19.09.11
✎
17:33
|
(5) Ну ?
Максимум(Выбор когда Склад = &Основной тогда Количество иначе 0 конец как НаОсновном) Максимум(Выбор когда Склад <> &Основной тогда Количество иначе 0 конец как НаДругомСкладе) Сгрупировать по Склад А дальше выбор если НаОсновном >0 тогда НаОсновном иначе НаДругомСкладе конец Как то так ? |
|||
7
Megas
19.09.11
✎
17:35
|
Идея в том что ты пишешь отдельно на основном и отдельно по другим.
Потом сворачиваешь максимум/минимум(пофиг) по основному и максимум/минимум(пофиг) по другим. и если на основном 0 тогда берёшь с другого склада |
|||
8
Axel2009
19.09.11
✎
17:38
|
ВЫБРАТЬ
ГруппировкаЗапроса.Номенклатура, ГруппировкаЗапроса.КоличествоОстаток, ВЫБОР КОГДА ГруппировкаЗапроса.ЕстьОсновной ТОГДА &Основной ИНАЧЕ ГруппировкаЗапроса.Склад КОНЕЦ КАК Склад ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток, МАКСИМУМ(ТоварыНаСкладахОстатки.Склад) КАК Склад, МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладахОстатки.Склад = &ОсновнойСклад ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ) КАК ЕстьОсновной ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Номенклатура) КАК ГруппировкаЗапроса |
|||
9
Megas
19.09.11
✎
17:46
|
(8) Чё то у тебя не верно то есть фигня! Чёто суммируешь много всего.
|
|||
10
Megas
19.09.11
✎
17:49
|
ВЫБРАТЬ
ГруппировкаЗапроса.Номенклатура, ВЫБОР КОГДА ГруппировкаЗапроса.НаОсновном <> 0 ТОГДА ГруппировкаЗапроса.НаОсновном ИНАЧЕ ГруппировкаЗапроса.НаДругих КОНЕЦ КАК Количество ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладахОстатки.Склад = &Основной ТОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ИНАЧЕ 0 КОНЕЦ) КАК НаОсновном, МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладахОстатки.Склад <> &Основной ТОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ИНАЧЕ 0 КОНЕЦ) КАК НаДругих ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Номенклатура) КАК ГруппировкаЗапроса Выводит только Номенклатуру и остаток. |
|||
11
Axel2009
19.09.11
✎
17:57
|
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ (ВЫБРАТЬ ГруппировкаЗапроса.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ГруппировкаЗапроса.ЕстьОсновной ТОГДА &Основной ИНАЧЕ ГруппировкаЗапроса.Склад КОНЕЦ КАК Склад ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, МАКСИМУМ(ТоварыНаСкладахОстатки.Склад) КАК Склад, МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладахОстатки.Склад = &Основной ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ) КАК ЕстьОсновной ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Номенклатура) КАК ГруппировкаЗапроса) КАК ПроверкаОсновногоСклада ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ПО ПроверкаОсновногоСклада.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура И ПроверкаОсновногоСклада.Склад = ТоварыНаСкладахОстатки.Склад |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |