
Error 107: El prefijo de columna 'a' no coincide con un nombre de tabla...
Publicado por f (4 intervenciones) el 19/07/2016 15:29:08
Buenas, tengo un error cuando quiero colocar la consulta a un procedimiento almacenado. Bueno la consulta que quiero agregar es la siguiente:
Esta consulta funciona bien. Pero al ingresarla al procedimiento ocurre el error que dice: El prefijo de columna 'a' no coincide con un nombre de tabla o con un alias usado en la consulta
El código que tengo en el procedimiento almacenado es el siguiente.
Me encantaría saber el porqué del error. Muchas Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT a.año, a.Total, a.Bonificado, a.copago, b.bonificado AS bonificadoFarmacia, c.BonificadoOptica, d.PagoSeguro
FROM (SELECT SUBSTRING(CAST(CIS_PERCONTAB AS varchar(10)), 1, 4) AS año, SUM(CIS_TOTAL) AS Total, SUM(CIS_BONIFICACION) AS Bonificado, SUM(CIS_COPAGO)
AS copago
FROM COMPLEMENTARIO_ISAPRE cis
WHERE (CIS_PERCONTAB BETWEEN 201105 AND 201504)
GROUP BY SUBSTRING(CAST(CIS_PERCONTAB AS varchar(10)), 1, 4)) a INNER JOIN
(SELECT SUBSTRING(CAST(FAR_PERIODO AS varchar(10)), 1, 4) AS año, SUM(FAR_MONTO_BONIFICADO) AS bonificado
FROM FARMACIA_PROCESO
WHERE (FAR_PERIODO BETWEEN 201205 AND 201504)
GROUP BY SUBSTRING(CAST(FAR_PERIODO AS varchar(10)), 1, 4)) b ON a.año = b.año INNER JOIN
(SELECT SUBSTRING(CAST(OPT_PERIODO AS varchar(10)), 1, 4) AS año, SUM(CAST(OPT_CONVENIO AS integer)) AS BonificadoOptica
FROM OPTICA_PROCESO
WHERE (OPT_PERIODO BETWEEN 201205 AND 201504)
GROUP BY SUBSTRING(CAST(OPT_PERIODO AS varchar(10)), 1, 4)) c ON a.año = c.año INNER JOIN
(SELECT SUBSTRING(CAST(RES_PERIODO AS varchar(10)), 1, 4) AS año, SUM(RES_PAGO) AS PagoSeguro
FROM REEMB_SEGURO
WHERE (RES_PERIODO BETWEEN 201205 AND 201504)
GROUP BY SUBSTRING(CAST(RES_PERIODO AS varchar(10)), 1, 4)) d ON a.año = d.año
ORDER BY a.año
El código que tengo en el procedimiento almacenado es el siguiente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
CREATE procedure [dbo].[Mel_Sp_ObtenerResumenPrestaciones](
@periodoIni varchar (6),
@periodoFin varchar (6)
)
AS
Declare @Hoy as datetime
set @Hoy = getdate()
set @Hoy = convert(varchar(30) ,@Hoy ,103)
select distinct null as ' ',null as ' ',null as ' ',null as ' ' ,'RESUMEN PRESTACIONES'as ' ',null as ' '
from beneficiario
union all
select distinct 'Periodo de los Datos:', cast(@periodoIni as varchar),cast(@periodoFin as varchar),null,null,null
from beneficiario
union all
select distinct 'Fecha de proceso:' ,cast( @hoy as varchar),null,null,null,null
from beneficiario
union all
select distinct 'año','Bonificado','copago','bonificadoFarmacia','bonificadoOptica','PagoSeguro'
union all
SELECT a.año, a.Total, a.Bonificado, a.copago, b.bonificado AS bonificadoFarmacia, c.BonificadoOptica, d.PagoSeguro
FROM (SELECT SUBSTRING(CAST(CIS_PERCONTAB AS varchar(10)), 1, 4) AS año, SUM(CIS_TOTAL) AS Total, SUM(CIS_BONIFICACION) AS Bonificado, SUM(CIS_COPAGO)
AS copago
FROM COMPLEMENTARIO_ISAPRE cis
WHERE (CIS_PERCONTAB BETWEEN 201105 AND 201504)
GROUP BY SUBSTRING(CAST(CIS_PERCONTAB AS varchar(10)), 1, 4)) a INNER JOIN
(SELECT SUBSTRING(CAST(FAR_PERIODO AS varchar(10)), 1, 4) AS año, SUM(FAR_MONTO_BONIFICADO) AS bonificado
FROM FARMACIA_PROCESO
WHERE (FAR_PERIODO BETWEEN 201205 AND 201504)
GROUP BY SUBSTRING(CAST(FAR_PERIODO AS varchar(10)), 1, 4)) b ON a.año = b.año INNER JOIN
(SELECT SUBSTRING(CAST(OPT_PERIODO AS varchar(10)), 1, 4) AS año, SUM(CAST(OPT_CONVENIO AS integer)) AS BonificadoOptica
FROM OPTICA_PROCESO
WHERE (OPT_PERIODO BETWEEN 201205 AND 201504)
GROUP BY SUBSTRING(CAST(OPT_PERIODO AS varchar(10)), 1, 4)) c ON a.año = c.año INNER JOIN
(SELECT SUBSTRING(CAST(RES_PERIODO AS varchar(10)), 1, 4) AS año, SUM(RES_PAGO) AS PagoSeguro
FROM REEMB_SEGURO
WHERE (RES_PERIODO BETWEEN 201205 AND 201504)
GROUP BY SUBSTRING(CAST(RES_PERIODO AS varchar(10)), 1, 4)) d ON a.año = d.año
ORDER BY a.año
GO
Me encantaría saber el porqué del error. Muchas Gracias.
Valora esta pregunta


0