19.03.2009 10:03
twix
 
прошу помощи знатоков SQL, потому что никак не соображу сам...
задача: отобрать позиции документов в виде "артикул", "тип_документа", "номер документа", "номер_документа_поставщика", "количество", "цена", "откуда", "куда", "код_операции", "имя_поставщика", "инн_поставщика", "кпп_поставщика"

сейчас отбираю все, кроме номера документа поставщика следующим запросом:
Код:
SELECT s.article, s.doctype, s.docid, s.quantity, s.itemprice, d.locationfrom, d.locationto, d.opcode, c.name, c.inn, c.kpp
FROM Supermag.SMSpec s,Supermag.SMDocuments d, Supermag.SMClientInfo c
WHERE s.doctype<>'AC'
AND s.doctype<>'IL'
AND s.doctype<>'RL'
AND s.docid IN
(SELECT id FROM Supermag.SMDocuments WHERE createdat BETWEEN '01.01.2009' AND '01.01.2009' AND docstate>2)
AND d.id=s.docid
AND c.id=d.clientindex
не соображу, как сюда же приплести выборку номера документа поставщика из таблички SMWayBillsIn, но только для приходов...
в результат должны попадать все документы, кроме Инвентаризационных описей и Сличительных ведомостей
19.03.2009 10:26
deucel
 
Типа так

Код:
SELECT s.article, d.doctype, d.ID, DECODE (d.doctype, 'WI', w.supplierdoc, NULL) supplierdoc, s.quantity, s.itemprice, d.locationfrom, d.locationto, d.opcode, c.NAME,
       c.inn, c.kpp
  FROM smdocuments d, smwaybillsin w, smspec s, smclientinfo c
 WHERE d.doctype = w.doctype(+)
   AND d.ID = w.ID(+)
   AND d.doctype = s.doctype
   AND d.ID = s.docid
   AND d.clientindex = c.ID(+)
   AND d.createdat BETWEEN TO_DATE ('01012009', 'DDMMYYYY') AND TO_DATE ('01012009', 'DDMMYYYY')
   AND d.doctype NOT IN ('AC', 'IL', 'RL')
   AND d.docstate > 2
19.03.2009 10:28
twix
 
спасибо! то, что надо (8
Часовой пояс GMT +3, время: 11:07.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.