15.11.2010 18:45
vdm
 
Лень вникать в данный случай, но думаю переделать будет несложно.
Это задача по моему из faq на sql.ru

Пара моих скриптов скриптов на эту тему

Код:
-- Список артикулов заказа с выводом всех ШК для артикула в одной строке
-- через аналитические ф-ии (в 1С 7.7 через ADODB почему-то не работает sys_xmlagg)
-- Количество по спецификации суммируется

SELECT article, TO_CHAR(quantity) quantity, shortname, ltrim(sys_connect_by_path(barcode, ';'), ';') as bar
  FROM
  ( SELECT  c.article, c.quantity, c.shortname, b.barcode,
            row_number() over (partition by c.article order by b.barcode) as id,
            count(*) over (partition by c.article order by b.barcode ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as cnt
      FROM
        (  SELECT a.article, SUM(s.quantity) quantity, a.shortname
             FROM supermag.smspec s, supermag.smdocuments d, supermag.smcard a
            WHERE d.ID = 'ЗП40232' AND d.doctype = 'OR' AND d.ID = s.docid AND d.doctype = s.doctype
              AND s.article = a.article
         GROUP BY a.article, a.shortname   
        ) c, supermag.smstoreunits b
     WHERE c.article=b.article(+)
  )      
 WHERE id = cnt
 START WITH id = 1
 CONNECT BY id = prior id + 1 and article = prior article
;
Код:
    -- Возврат количества и списка артикулов в спецификации без признака 'грузить в кассу'
    select count(*), sys_xmlagg(xmlelement(col, sc.article ||', ')).extract('/ROWSET/COL/text()').getclobval()  
      from supermag.smspec sp, supermag.smcard sc
     where sp.doctype = :DocType and sp.docid = :ID 
       and sp.article=sc.article and sc.cashload=0;
Вроде оба способа требуют 9-й оракл.