Bueno, aunque no repare la logica del mismo apuesto que esto te puede servir...
Código SQL
[-]
CREATE PROCEDURE NOMBRE_PROCEDIMIENTO (
SUJETO varchar(10),
FECHA_INICIAL date,
FECHA_FINAL date)
returns (
FECHA date,
CONCEPTO2 varchar(10),
FOLIO varchar(10),
REFERENCIA varchar(255),
DEBE double precision,
HABER double precision,
FOLIO_2 varchar(10),
TAG integer,
CAPTION varchar(255),
TIPMOV varchar(10))
as
begin
for SELECT OC.FECHA, OC.CONCEPTO2,VT.folio factura,
OC.REFERENCIA, OC.DEBE, OC.HABER,
OC.FOLIO, OC.TAG,CSB.caption,OC.TIPOMOV
FROM OC inner join CC on OC.CVECUENTA=CC.C_CLAVE
inner join CSB on CSB.tag= OC.TAG
inner join VT on VT.clave= OC.CONCEPTO2
WHERE OC.SUJETO = :SUJETO
AND OC.Fecha between :FECHA_INICIAL and :FECHA_FINAL
AND OC.CVECUENTA = 4
and OC.tag not in(356,440,434,550,206,525)
union all
SELECT OC.FECHA, OC.CONCEPTO2,VT.folio factura,
OC.REFERENCIA, OC.DEBE, OC.HABER,
OC.FOLIO, OC.TAG,CSB.caption,OC.TIPOMOV
FROM OC inner join CC on OC.CVECUENTA=CC.C_CLAVE
inner join CSB on CSB.tag= OC.TAG
inner join AM on AM.clavemov= OC.REFERENCIA
inner join AMdetalle on(AM.cons=AMdetalle.claveaplica)
inner join PPaux on PPaux.clave=AMdetalle.clavePPaux
inner join PP on(PP.clave=PPaux.clavePP)
inner join VT on VT.clave= PP.clvVT
WHERE OC.SUJETO = :SUJETO
AND OC.Fecha between :FECHA_INICIAL and :FECHA_FINAL
AND OC.CVECUENTA = 4
and OC.tag not in(356,440,434,550,206,525)
ORDER BY 1, 3
INTO :FECHA, :CONCEPTO2, :FOLIO, :REFERENCIA, :DEBE, :HABER, :FOLIO_2,
:TAG, :CAPTION, :TIPMOV
do
begin
suspend;
end
end
NOTA: Por favor usa siempre las etiquetas necesarias, para que tu codigo se entienda mejor...