Buenas noches, gracias por su acostumbrada ayuda. Tengo un procedure en Sql Server el cual seria el siguiente:
USE []
GO
/****** Object: StoredProcedure [dbo].[stp_Reporte_Facturado_BLs] Script Date: 10/27/2016 9:13:22 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- =============================================
ALTER PROCEDURE [dbo].[stp_Reporte_Facturado_BLs]
--@FechaDesde varchar(max), @FechaHasta varchar(max), @CodManifiesto int
@CodManifiesto VARCHAR(max), @CodBl VARCHAR(max)
--@EstadoFactura varchar(max)
AS
BEGIN
DECLARE @cols AS varchar(MAX),@query AS varchar(MAX),
@EstadoFactura as varchar(max);
SET @EstadoFactura = 'V';
SET @cols = STUFF(
(
SELECT DISTINCT '],[' + CAST(CodigoTipoCargoLocal AS varchar(3))
FROM Ct_C_CargosLocalesTipos
FOR XML PATH('')
)
,1,2,''
)+']'
SET @query = '
SELECT CodManifiesto, CodBL, NombreTransporte NumViaje, NumBL, IDEquipo ,
'+@cols+' FROM (
SELECT b.CodManifiesto, b.CodBL, NombreTransporte, NumViaje, NumBL , IDEquipo,
NumPDF, f.Total, TipoCargoLocal
FROM M_BLs b
INNER JOIN M_Manifiestos man on b.CodManifiesto = man.CodManifiesto
INNER JOIN M_CargosLocales mc on b.CodBL = mc.CodBL
LEFT JOIN V_EquiposBL veq on mc.CodEquipo = veq.CodEquipo
LEFT JOIN Ct_FacturasDetalles fd on mc.CodCargoLocal = fd.CodCargoLocal
LEFT JOIN Ct_Facturas f on f.CodFactura = fd.CodFactura
LEFT JOIN Ct_RecibosDetalles rd on fd.CodDetalleFactura = rd.CodDetalleFactura
LEFT JOIN Ct_Recibos r on r.CodRecibo = rd.CodRecibo
WHERE b.codmanifiesto = '+@CodManifiesto+' AND NumBL = '''+@CodBl+'''
) AS TP
PIVOT
(
MAX(NumPDF)
for TipoCargoLocal IN ('+@cols+')
)ptable
'
--GROUP BY NumBL, '+@cols+',NombreTransporte, NumViaje'
execute(@query)
END
En este procedure a como esta ahorita, a la fuerza le debo enviar los datos de @codmanifiesto y @codbl. El problema viene en que ese @codbl hay casos en los que si llegara y casos en que no. Para esto necesitaria un if o un case, pero no tengo idea de como utilizarlo, para que siempre funcione con el @codmanifiesto y en algunos casos con @codbl.
Alguien podria ayudarme con esto por favor?
Gracias.
USE []
GO
/****** Object: StoredProcedure [dbo].[stp_Reporte_Facturado_BLs] Script Date: 10/27/2016 9:13:22 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- =============================================
ALTER PROCEDURE [dbo].[stp_Reporte_Facturado_BLs]
--@FechaDesde varchar(max), @FechaHasta varchar(max), @CodManifiesto int
@CodManifiesto VARCHAR(max), @CodBl VARCHAR(max)
--@EstadoFactura varchar(max)
AS
BEGIN
DECLARE @cols AS varchar(MAX),@query AS varchar(MAX),
@EstadoFactura as varchar(max);
SET @EstadoFactura = 'V';
SET @cols = STUFF(
(
SELECT DISTINCT '],[' + CAST(CodigoTipoCargoLocal AS varchar(3))
FROM Ct_C_CargosLocalesTipos
FOR XML PATH('')
)
,1,2,''
)+']'
SET @query = '
SELECT CodManifiesto, CodBL, NombreTransporte NumViaje, NumBL, IDEquipo ,
'+@cols+' FROM (
SELECT b.CodManifiesto, b.CodBL, NombreTransporte, NumViaje, NumBL , IDEquipo,
NumPDF, f.Total, TipoCargoLocal
FROM M_BLs b
INNER JOIN M_Manifiestos man on b.CodManifiesto = man.CodManifiesto
INNER JOIN M_CargosLocales mc on b.CodBL = mc.CodBL
LEFT JOIN V_EquiposBL veq on mc.CodEquipo = veq.CodEquipo
LEFT JOIN Ct_FacturasDetalles fd on mc.CodCargoLocal = fd.CodCargoLocal
LEFT JOIN Ct_Facturas f on f.CodFactura = fd.CodFactura
LEFT JOIN Ct_RecibosDetalles rd on fd.CodDetalleFactura = rd.CodDetalleFactura
LEFT JOIN Ct_Recibos r on r.CodRecibo = rd.CodRecibo
WHERE b.codmanifiesto = '+@CodManifiesto+' AND NumBL = '''+@CodBl+'''
) AS TP
PIVOT
(
MAX(NumPDF)
for TipoCargoLocal IN ('+@cols+')
)ptable
'
--GROUP BY NumBL, '+@cols+',NombreTransporte, NumViaje'
execute(@query)
END
En este procedure a como esta ahorita, a la fuerza le debo enviar los datos de @codmanifiesto y @codbl. El problema viene en que ese @codbl hay casos en los que si llegara y casos en que no. Para esto necesitaria un if o un case, pero no tengo idea de como utilizarlo, para que siempre funcione con el @codmanifiesto y en algunos casos con @codbl.
Alguien podria ayudarme con esto por favor?
Gracias.