Quantcast
Channel: SQL.ru: Firebird, InterBase
Viewing all articles
Browse latest Browse all 1677

Склеить 2 строки в подзапросе

$
0
0
Есть такой запрос при выборке материалов из таблицы для формирования файла в Excel. И при выборке тонировки с 2х сторон вылетает ошибка. Можно как-нибудь "склеить" 2 строки подзапроса (PL) в 1 строку?

select
cast(SUM(itd.qty) as varchar(15)) as summa
, k.name as contragent
, o.orderid
, o.agreementno || '/' || oi.name || '/'  || itd.modelno || '/' ||  itd.izdpart
, go.name as NomRaskr                                             
, cast(oi.qty as varchar(15)) as sumizd
, case when gg.ggtypeid <> 18 then
    (
    select distinct itemsdetail.int_marking
    from itemsdetail
    join  groupgoods on groupgoods.grgoodsid = itemsdetail.grgoodsid
    where itemsdetail.orderitemsid =oi.orderitemsid
    and   itemsdetail.modelno =itd.modelno
    and   itemsdetail.izdpart =itd.izdpart
    and   groupgoods.ggtypeid = 18
    ) else itd.int_marking end as formula 
, gg.name
, gg.grgoodsid    
, g.marking as art
, g.marking2 as art2
 , case when gg.ggtypeid = 51 then
    (
    select distinct itemsdetail.width
    from itemsdetail
    join groupgoods  on groupgoods.grgoodsid = itemsdetail.grgoodsid
    where itemsdetail.orderitemsid =oi.orderitemsid
    and itemsdetail.modelno =itd.modelno
    and itemsdetail.izdpart =itd.izdpart
    and groupgoods.ggtypeid = 18
    ) else itd.width end as width 

 , case when gg.ggtypeid = 51 then
    (
    select distinct
    itemsdetail.height
    from itemsdetail
    join groupgoods  on groupgoods.grgoodsid = itemsdetail.grgoodsid
    where itemsdetail.orderitemsid =oi.orderitemsid
    and itemsdetail.modelno =itd.modelno
    and itemsdetail.izdpart =itd.izdpart
    and groupgoods.ggtypeid = 18
    ) else itd.height end as height 
, itd.thick
, oi.rcomment as komment
, gg.ggtypeid as tipem

/*Тонировка начало*/

, case when gg.ggtypeid <> 20 then
   (
    select
     distinct goods.marking
    from itemsdetail
    join goods  on goods.goodsid = itemsdetail.goodsid
    join groupgoods  on groupgoods.grgoodsid = itemsdetail.grgoodsid
    where itemsdetail.orderitemsid =oi.orderitemsid
    and itemsdetail.modelno =itd.modelno
    and itemsdetail.izdpart =itd.izdpart
    and groupgoods.ggtypeid = 20
    ) end as PL

/*Тонировка конец*/

   , case when gg.ggtypeid <> 63 then
    (
    select distinct goods.marking
    from itemsdetail
    join goods  on goods.goodsid = itemsdetail.goodsid
    join groupgoods  on groupgoods.grgoodsid = itemsdetail.grgoodsid
    where itemsdetail.orderitemsid =oi.orderitemsid
    and itemsdetail.modelno =itd.modelno
    and itemsdetail.izdpart =itd.izdpart
    and groupgoods.ggtypeid = 63
    ) end as Paskl  
  , case when gg.ggtypeid <> 16 then
    (
    select distinct groupgoods.name
    from itemsdetail
    join groupgoods on groupgoods.grgoodsid = itemsdetail.grgoodsid
    where itemsdetail.orderitemsid =oi.orderitemsid
    and itemsdetail.modelno =itd.modelno
    and itemsdetail.izdpart =itd.izdpart
    and groupgoods.ggtypeid = 16
    ) end as falsh 
 from itemsdetail itd, itemsdetail itd_SP
     join orderitems oi on (oi.orderitemsid=itd.orderitemsid)
     join orders o on (o.orderid = oi.orderid)
     join customers c on (c.customerid = o.customerid)
     join contragents k on (k.contragid = c.contragid)
     join groupgoods gg on (gg.grgoodsid=itd.grgoodsid)
     join goods g on (g.goodsid=itd.goodsid)
     join GRORDERSDETAIL god on god.orderitemsid = itd.orderitemsid
     join grorders go on go.grorderid = god.grorderid 
where
go.grorderid in (10414)
/* --itd.orderitemsid =:orderitemsid
--and itd.modelno  =:modelno
--and itd.izdpart  =:izdpart
--and itd.updatestatus <> 3 and itd.childid is null */
and itd.orderitemsid = itd_SP.orderitemsid
and itd.modelno = itd_SP.modelno
and o.orderid not in (102606)
--102568,102554,102610,102597,
and gg.ggtypeid in (18,51)
group by
k.name
, o.orderid  
, o.agreementno  
, oi.orderitemsid
, oi.name
, oi.qty
, gg.ggtypeid    
, itd.int_marking
, itd.modelno
, itd.izdpart
, gg.name
, gg.grgoodsid
, g.marking
, g.marking2
, itd.width
, itd.height
, itd.thick
, go.name    
, oi.rcomment
, 18
, itd.grgoodsid
order by
o.agreementno,oi.name, itd.modelno, itd.izdpart desc

Viewing all articles
Browse latest Browse all 1677

Trending Articles