Ver Mensaje Individual
  #6  
Antiguo 15-04-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 21
gluglu Va por buen camino
Parece que funciona de momento ....

Tengo que terminar ahora el código completo, para encajar todo el código Delphi en sentencias SQL.

De momento el tocho de sentencia anterior ha quedado reducido a :

Código SQL [-]
Select -1, -2, RL.BOOKINGNO,
  case when SP_PAXTYPE.OUT_PAXTYPE = 1 then RL.PAXQUANTITY else null end as PAXTYPE1_QUANT,
  case when SP_PAXTYPE.OUT_PAXTYPE = 1 and SP_BOARDTYPE.OUT_BOARDTYPE > 0 then SP_BOARDTYPE.OUT_BOARDTYPE else null end as BOADTYPE1,
  case when SP_PAXTYPE.OUT_PAXTYPE = 2 then RL.PAXQUANTITY else null end as PAXTYPE2_QUANT,
  case when SP_PAXTYPE.OUT_PAXTYPE = 2 and SP_BOARDTYPE.OUT_BOARDTYPE > 0 then SP_BOARDTYPE.OUT_BOARDTYPE else null end as BOADTYPE2,
  case when SP_PAXTYPE.OUT_PAXTYPE = 3 then RL.PAXQUANTITY else null end as PAXTYPE3_QUANT,
  case when SP_PAXTYPE.OUT_PAXTYPE = 3 and SP_BOARDTYPE.OUT_BOARDTYPE > 0 then SP_BOARDTYPE.OUT_BOARDTYPE else null end as BOADTYPE3,
  case when BPD.ROOMINGLISTNO is null
       then case when SP_PAXTYPE.OUT_PAXTYPE = 1     then RL.PAXQUANTITY     else null end
       else case when BPD.PAXTYPE1_QUANT is not null then BPD.PAXTYPE1_QUANT else null end
  end as P_TYPE1_QUANT,
  case when BPD.ROOMINGLISTNO is null
       then case when SP_PAXTYPE.OUT_PAXTYPE = 1 and SP_BOARDTYPE.OUT_BOARDTYPE > 0 then SP_BOARDTYPE.OUT_BOARDTYPE else null end
       else case when BPD.PAXTYPE1_QUANT is not null and BPD.BOARDTYPE1 is not null then BPD.BOARDTYPE1 else null end
  end as B_TYPE1,
  case when BPD.ROOMINGLISTNO is null
       then case when SP_PAXTYPE.OUT_PAXTYPE = 2     then RL.PAXQUANTITY     else null end
       else case when BPD.PAXTYPE2_QUANT is not null then BPD.PAXTYPE2_QUANT else null end
  end as P_TYPE2_QUANT,
  case when BPD.ROOMINGLISTNO is null
       then case when SP_PAXTYPE.OUT_PAXTYPE = 2 and SP_BOARDTYPE.OUT_BOARDTYPE > 0 then SP_BOARDTYPE.OUT_BOARDTYPE else null end
       else case when BPD.PAXTYPE2_QUANT is not null and BPD.BOARDTYPE2 is not null then BPD.BOARDTYPE2 else null end
  end as B_TYPE2,
  case when BPD.ROOMINGLISTNO is null
       then case when SP_PAXTYPE.OUT_PAXTYPE = 3     then RL.PAXQUANTITY     else null end
       else case when BPD.PAXTYPE3_QUANT is not null then BPD.PAXTYPE3_QUANT else null end
  end as P_TYPE3_QUANT,
  case when BPD.ROOMINGLISTNO is null
       then case when SP_PAXTYPE.OUT_PAXTYPE = 3 and SP_BOARDTYPE.OUT_BOARDTYPE > 0 then SP_BOARDTYPE.OUT_BOARDTYPE else null end
       else case when BPD.PAXTYPE3_QUANT is not null and BPD.BOARDTYPE3 is not null then BPD.BOARDTYPE3 else null end
  end as B_TYPE3,
  SP_OPERATORDEBIT.OUT_OPERATORDEBIT,
  BPD.CREATETIMESTAMP, BPD.CREATEUSER, BPD.CREATEPOSITION,
  BPD.MODIFYTIMESTAMP, BPD.MODIFYUSER, BPD.MODIFYPOSITION
from BOOKINGS_ROOMINGLIST RL
left join BOOKINGS_OBJECTS BO
  on BO.ROOMINGLISTNO = RL.ROOMINGLISTNO
  and BO.DATEFROM <= '04-30-2011' and BO.DATETO >= '04-01-2011'
left join BOOKINGS_PAXDETAIL BPD
  on RL.ROOMINGLISTNO = BPD.ROOMINGLISTNO
left join BOOKINGS BK
  on RL.BOOKINGNO = BK.BOOKINGNO
left join SP_PAXDETAIL_PAXTYPE(RL.BOOKINGNO) SP_PAXTYPE
  on RL.ROOMINGLISTNO = RL.ROOMINGLISTNO
left join SP_PAXDETAIL_BOARDTYPE(RL.BOOKINGNO) SP_BOARDTYPE
  on RL.ROOMINGLISTNO = RL.ROOMINGLISTNO
left join SP_PAXDETAIL_OPERATORDEBIT(RL.BOOKINGNO) SP_OPERATORDEBIT
  on RL.ROOMINGLISTNO = RL.ROOMINGLISTNO
where RL.BOOKINGNO = 101974

siendo SP_PAXDETAIL_PAXTYPE, SP_PAXDETAIL_BOARDTYPE y SP_PAXDETAIL_OPERATORDEBIT los procedimientos almacenados que he creado. No creo necesario detallar el contenido de los SP ya que lo único que importa aquí es que llamo desde esta sentencia a los SP's sin entrar en el detalle de lo que devuelve cada uno.

__________________
Piensa siempre en positivo !
Responder Con Cita