SQL Server - Error 107: El prefijo de columna 'a' no coincide con un nombre de tabla...

 
Vista:
sin imagen de perfil

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:
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
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.
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Error 107: El prefijo de columna 'a' no coincide con un nombre de tabla...

Publicado por Isaias (4558 intervenciones) el 19/07/2016 19:59:21
¿Sera porque esta utilizando otro alias FROM COMPLEMENTARIO_ISAPRE cis?


Tengo una duda, ¿las tablas se unen por algun campo?

COMPLEMENTARIO_ISAPRE
FARMACIA_PROCESO
OPTICA_PROCESO
REEMB_SEGURO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error 107: El prefijo de columna 'a' no coincide con un nombre de tabla...

Publicado por f (4 intervenciones) el 19/07/2016 22:25:42
Lo que quiero hacer es sumar gastos en isapre, farmacia, optica y seguro. y ordenarlos por año. Por eso uno las sumas de cada tabla por el año del proceso. Espero que se entienda, pero lo que me parece raro es que la consulta funcione si la ejecuto sin procedimiento almacenado. Gracias por responder.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Error 107: El prefijo de columna 'a' no coincide con un nombre de tabla...

Publicado por Isaias (4558 intervenciones) el 20/07/2016 18:30:24
Entiendo lo que desea hacer, pero no contesto a mi pregunta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error 107: El prefijo de columna 'a' no coincide con un nombre de tabla...

Publicado por f (4 intervenciones) el 20/07/2016 18:56:56
Lo del alias Cis no debe ser porque cuando lo saco pasa lo mismo. Con respecto a lo otro,lo que obtengo de las tablas las uno por el campo año. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Error 107: El prefijo de columna 'a' no coincide con un nombre de tabla...

Publicado por Isaias (4558 intervenciones) el 20/07/2016 20:21:03
Va de nuevo mi pregunta, las tablas que listo, ¿se unen mediante algun campo, tienen una relacion?

COMPLEMENTARIO_ISAPRE
FARMACIA_PROCESO
OPTICA_PROCESO
REEMB_SEGURO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error 107: El prefijo de columna 'a' no coincide con un nombre de tabla...

Publicado por f (4 intervenciones) el 20/07/2016 20:25:38
No están relacionadas entre ellas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar