Вход | Регистрация


1С:Предприятие ::

Метки: 

гуру sql можно ли решить это запросом?

Я
   Gorr
 
11.04.14 - 14:02
На входе имее 2 таблички заказы и продажи:
1я табличка "заказы"

Товар Резерв 5
Товар        5

2я табличка "продажи"

товар 8

на выходе надо получить что продано из резерва/не резерва. при этом считать, что сначала продается резерв. таким образом в примере результат должен быть:

товар 5(резерв) 3(не резерв)
 
  Рекламное место пустует
   ИА1С
 
1 - 11.04.14 - 14:05
Считать только на лету. Ты это в скуле хочешь)))? Или можно запросом 1С?
   shuhard
 
2 - 11.04.14 - 14:08
(0) что-то мешает тупо вычесть одно из другого
и использовать Объединить все ?
   Gorr
 
3 - 11.04.14 - 14:10
(2) пример в студию
   _fvadim
 
4 - 11.04.14 - 14:11
(3) лентяй, напрягись маленько
   Ненавижу 1С
 
5 - 11.04.14 - 14:12
select
Продажи.Товар,
case
  when Продажи.Количество>=coalesce(Заказы.Количество,0) then coalesce(Заказы.Количество,0)
  else Продажи.Количество
end as Резерв,
case
  when Продажи.Количество>=coalesce(Заказы.Количество,0) then Продажи.Количество-coalesce(Заказы.Количество,0)
  else 0
end as НеРезерв
from Продажи
left join Заказа По (Продажи.Товар=Заказы.Товар)
   shuhard
 
6 - 11.04.14 - 14:12
(5) вот за что тебя форум ценит и уважает =)
   Ёпрст
 
7 - 11.04.14 - 14:15
Ждём следующий вопрос, как реализовать coalesce в снеговике
:)))
   КонецЦикла
 
8 - 11.04.14 - 14:22
Надо применить предварительную обработку данных
Кто мешает поместить в таблицу наименьшее кол-во от товара в резерве/не резерве, вот и выйдет продажа резерва, фторой столбец - разница
   Gorr
 
9 - 11.04.14 - 14:52
(5) не катит - возвращает 2 строки. если соединение то уж внутреннее. кроме реализации функции мин в запросе ничего нового в запросе не увидел.
читайте внимательнее задание должно вернуть 1 строку:
товар 5(резерв) 3(не резерв)

(3) сам не лентяй? пример в студию!!!
   Gorr
 
10 - 11.04.14 - 14:53
для удобства тестирования задания в консоли:
ВЫБРАТЬ
    "товар" КАК товар,
    ИСТИНА КАК резерв,
    5 КАК кол
ПОМЕСТИТЬ заказы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "товар",
    ЛОЖЬ,
    5
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    "товар" КАК товар,
    8 КАК кол
ПОМЕСТИТЬ продажи
;
 
  Рекламное место пустует
   Ненавижу 1С
 
11 - 11.04.14 - 14:53
(9) соединение левое и возвращает одну строку, не ври
   Ненавижу 1С
 
12 - 11.04.14 - 14:54
(10)

ИСТИНА КАК резерв

что это за куйня?
   Gorr
 
13 - 11.04.14 - 14:54
(10) такого условие означает что да, действительно заказано из резерва. что непонятного?
   Gorr
 
14 - 11.04.14 - 14:55
+13 булево
   _fvadim
 
15 - 11.04.14 - 14:56
(13) на предыдущем допросе вы рисовали другую схему
   Gorr
 
16 - 11.04.14 - 14:56
(11) хоть левое хоть внутреннее. если в одной таблице две строки, а другой 1 то вернет две!
   Ненавижу 1С
 
17 - 11.04.14 - 14:56
(13) непонятно как ты условия задачи пишешь

по делу:
измени в запросе из (5) последнюю строку на

left join Заказы by (Продажи.Товар=Заказы.Товар and Заказы.Резерв)
   Gorr
 
18 - 11.04.14 - 15:01
(17) такое ощущение что вы задачу не поняли... запрос должен распределить количество реализации на две строки из заказа.
из первой удет 5 из второй уйдет остаток 3.
   Ненавижу 1С
 
19 - 11.04.14 - 15:02
(18) это я не понял?
"не катит - возвращает 2 строки"
"запрос должен распределить количество реализации на две строки"
   МойКодУныл
 
20 - 11.04.14 - 15:03
(19) не пытайся.=) Он ждет готового решения своей задачи в том виде, который себе представляет:)
   МойКодУныл
 
21 - 11.04.14 - 15:04
(18)
А так?
ВЫБРАТЬ
    "товар" КАК товар,
    ИСТИНА КАК резерв,
    5 КАК кол
ПОМЕСТИТЬ заказы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "товар",
    ЛОЖЬ,
    5
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    "товар" КАК товар,
    8 КАК кол
ПОМЕСТИТЬ продажи
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    заказы.товар,
    СУММА(ВЫБОР
            КОГДА заказы.резерв
                ТОГДА заказы.кол
            ИНАЧЕ 0
        КОНЕЦ) КАК Резерв,
    СУММА(ВЫБОР
            КОГДА НЕ заказы.резерв
                ТОГДА заказы.кол
            ИНАЧЕ 0
        КОНЕЦ) КАК Сток
ПОМЕСТИТЬ ТоварыРезервСток
ИЗ
    заказы КАК заказы

СГРУППИРОВАТЬ ПО
    заказы.товар
;

////////////////////////////////////////////////////////////////////////////////

УНИЧТОЖИТЬ Заказы
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    продажи.товар,
    СУММА(ВЫБОР
            КОГДА ТоварыРезервСток.Резерв > продажи.кол
                ТОГДА продажи.кол
            ИНАЧЕ ТоварыРезервСток.Резерв
        КОНЕЦ) КАК СРезерва,
    СУММА(ВЫБОР
            КОГДА ТоварыРезервСток.Резерв > продажи.кол
                ТОГДА 0
            ИНАЧЕ продажи.кол - ТоварыРезервСток.Резерв
        КОНЕЦ) КАК Свободного
ИЗ
    продажи КАК продажи
        ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРезервСток КАК ТоварыРезервСток
        ПО продажи.товар = ТоварыРезервСток.товар

СГРУППИРОВАТЬ ПО
    продажи.товар
   Gorr
 
22 - 11.04.14 - 15:12
(18) извиняюсь. все верно!
всем спасибо!
   Gorr
 
23 - 11.04.14 - 15:12
+22 к (19)



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует