[ОТВЕТИТЬ]
Опции темы
13.09.2013 13:31  
PavelGS
Подскажите как выбрать дату и кол-во в последней поставке

Пробовал так, ругается на S.ARTICLE
Код:
SELECT
    S.ARTICLE,
    (SELECT   /*+ FIRST_ROWS */ *  FROM (
SELECT
D.CREATEDAT
--D.ID
FROM SUPERMAG.SMDOCUMENTS D1, SUPERMAG.SMSPEC S1
WHERE 
D1.ID = S1.DOCID
AND D1.DOCTYPE = S1.DOCTYPE
AND S1.ARTICLE = S.ARTICLE
AND D1.DOCTYPE = 'WI'
AND D1.CREATEDAT <= TO_DATE('10.09.13','DD.MM.YY')
AND D1.LOCATIONTO = 1
ORDER BY D1.CREATEDAT DESC
)
WHERE ROWNUM = 1  
    ) AS LASPOST,
    
    (SELECT   /*+ FIRST_ROWS */ *  FROM (
SELECT
S.QUANTITY
--D.ID
FROM SUPERMAG.SMDOCUMENTS D2, SUPERMAG.SMSPEC S2
WHERE 
D2.ID = S2.DOCID
AND D2.DOCTYPE = S2.DOCTYPE
AND S2.ARTICLE = S.ARTICLE
AND D2.DOCTYPE = 'WI'
AND D2.CREATEDAT <= TO_DATE('10.09.13','DD.MM.YY')
AND D2.LOCATIONTO = 1
ORDER BY D2.CREATEDAT DESC
)
WHERE ROWNUM = 1) AS Q  
    
FROM 
    SUPERMAG.SMDOCUMENTS D, 
    SUPERMAG.SMSPEC S
WHERE
    D.ID = S.DOCID
    AND D.DOCTYPE = S.DOCTYPE
    AND D.ID = 'ЗП1486911'
 
13.09.2013 13:34  
Little
Уверен что в SMSPEC хранятся ARTICLE, скорее всего надо свзать с SMCARD
 
13.09.2013 13:36  
PavelGS
Цитата:
Сообщение от Little
Уверен что в SMSPEC хранятся ARTICLE, скорее всего надо свзать с SMCARD
Да я же по документу выбираю
 
13.09.2013 15:02  
PavelGS
Сделал вот так, но работает очень долго :(
Код:
SELECT /*+ USE_HASH(S,D) */ S.ARTICLE AS ART, 
       (SELECT CREATEDAT 
          FROM (SELECT D.CREATEDAT, 
                       S.ARTICLE 
                  FROM SUPERMAG.SMDOCUMENTS D, 
                       SUPERMAG.SMSPEC S 
                 WHERE D.ID = S.DOCID 
                   AND D.DOCTYPE = S.DOCTYPE 
                   AND D.DOCTYPE = 'WI' 
                   AND D.LOCATIONTO = 1 
                 ORDER BY D.CREATEDAT DESC) 
         WHERE ARTICLE = S.ARTICLE 
           AND ROWNUM = 1 
           AND CREATEDAT < D.CREATEDAT) AS LASPOST, 
       (SELECT QUANTITY 
          FROM (SELECT D.CREATEDAT, 
                       S.ARTICLE, 
                       S.QUANTITY --D.ID 
                  FROM SUPERMAG.SMDOCUMENTS D, 
                       SUPERMAG.SMSPEC S 
                 WHERE D.ID = S.DOCID 
                   AND D.DOCTYPE = S.DOCTYPE 
                   AND D.DOCTYPE = 'WI' 
                   AND D.LOCATIONTO = 1 
                 ORDER BY D.CREATEDAT DESC) 
         WHERE ARTICLE = S.ARTICLE 
           AND ROWNUM = 1 
           AND CREATEDAT < D.CREATEDAT) AS Q 
  FROM SUPERMAG.SMDOCUMENTS D, 
       SUPERMAG.SMSPEC S 
 WHERE D.ID = S.DOCID 
   AND D.DOCTYPE = S.DOCTYPE 
   AND D.ID = 'ЗП1486911'
 
13.09.2013 15:26  
Crack
Если долго, то надо бы план показать. Но по тому, что написано, я бы попробовал не вложенные селекты, а одну и ту же таблицу взять два раза и соединять условиями...
 
16.09.2013 12:46  
Little
Ну или join`ами собрать запрос...
 
 
Опции темы



Часовой пояс GMT +3, время: 11:35.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.