problema con sql

03/01/2007 - 10:37 por TR | Informe spam
Hola,

Tengo esta vista constrida para sql 2000, pero al ejecutarlarla en sql
2005 salen resultados distintos, parece que no agrupa. Alguien me puede
ayudar?, existe algún convertidor de sql's de 2000 a 2005 ?

Gracias, saludos y feliz año.


SELECT TOP 100 PERCENT sqlEpigrafe.idepigrafe,
sqlEpigrafe.idsubepigrafe,

> isnull(sqlEpigrafe.idpropuesta, 0) as idpropuesta,
> isnull(sqlEpigrafe.idcertificacion, 0) as idcertificacion,
> CONVERT(varchar(10),MAX(sqlEpigrafe.fechainicio),103) as fechainicio,
> CONVERT(varchar(10),MAX(sqlEpigrafe.fechafin),103) as fechafin,
> MAX(sqlEpigrafe.tituloEpigrafe) as tituloEpigrafe,
> MAX(sqlEpigrafe.textoEpigrafe) as textoEpigrafe,
> MAX(sqlEpigrafe.tituloSubepigrafe) as tituloSubepigrafe,
> MAX(sqlEpigrafe.textoSubepigrafe) as textoSubepigrafe,
> MAX(sqlEpigrafe.codigoPres) as codigoPres,
> MAX(sqlEpigrafe.conceptoPres) as conceptoPres,
> SUM(ISNULL(sqlEpigrafe.PRES, 0)) AS presupuesto,
> SUM(isnull(sqlTotal.totalF + sqlTotal.totalN,0)) as total,
> isnull(SUM((sqlTotal.totalF + sqlTotal.totalN) * 100 /
> sqlEpigrafe.PRES),0) as porcTotal
>
> FROM (SELECT E.idepigrafe, S.idsubepigrafe, P.idpropuesta,
> C.idcertificacion, MAX(fechainicio) as fechainicio, MAX(fechafin)


as fechafin,

> MAX(E.titulo) AS tituloEpigrafe, MAX(S.titulo) AS


tituloSubepigrafe,

> MAX(E.texto) AS textoEpigrafe, MAX(S.texto) AS textoSubepigrafe,
> MAX(P.presupuesto) AS PRES, MAX(P.codigo) as codigoPres,


MAX(P.concepto)

> as conceptoPres
> FROM sge.Epigrafes E LEFT JOIN
> sge.Subepigrafes S


LEFT JOIN

> sge.PROPUESTAS P LEFT


OUTER JOIN

> sge.Propuestas_certificaciones PC INNER JOIN
> sge.Certificaciones C
> ON C.idcertificacion = PC.idcertificacion ON


PC.idpropuesta > > P.idpropuesta ON P.idsubepigrafe = S.idsubepigrafe ON E.idepigrafe > > S.idepigrafe

> GROUP BY E.idepigrafe, S.idsubepigrafe,
> P.idpropuesta, C.idcertificacion) sqlEpigrafe
> INNER JOIN
> (SELECT idpropuesta, idcertificacion,
> SUM(subvencionado) AS totalF, 0 as totalN
> FROM


sge.Facturas

> GROUP BY idpropuesta,
> idcertificacion
> UNION
> SELECT N.idpropuesta,


N.idcertificacion, 0

> as totalF, SUM(subvencionadoN + subvencionadoSS) as totalN
> FROM
> sge.Personal P INNER JOIN
>


sge.Nominas N ON

> P.idpersonal = N .idpersonal
> GROUP BY N.idpropuesta,
> idcertificacion) sqlTotal
>
> ON sqlEpigrafe.idpropuesta = sqlTotal.idpropuesta AND
> sqlEpigrafe.idcertificacion = sqlTotal.idcertificacion
> GROUP BY sqlEpigrafe.idepigrafe, sqlEpigrafe.idsubepigrafe,
> sqlEpigrafe.idpropuesta, sqlEpigrafe.idcertificacion
> ORDER BY MAX(sqlEpigrafe.tituloEpigrafe),
> MAX(sqlEpigrafe.tituloSubepigrafe),
> MAX(CONVERT(real,sqlEpigrafe.codigoPres)), MAX(sqlEpigrafe.fechainicio)

Preguntas similare

Leer las respuestas

#1 Antonio Soto
03/01/2007 - 11:19 | Informe spam
Hola TR,

El problema está con el Order By dentro de la vista. SQL 2000 soportaba el
truco de poner el TOP 100 PERCENT y así poder ordenar, pero esa era una
característica no documentada, que han quitado en SQL SErver 2005. Quita el
TOP 100 PERCENT y el order by y haz la ordenación desde la llamada a la
vista

Saludos

Antonio Soto
Solid Quality Learning
http://www.sqlu.com
Disclaimer: This communication is an original work and represents my sole
views on the subject. It does not represent the views of any other person
or entity either by inference or direct reference
"TR" wrote in message
news:%
Hola,

Tengo esta vista constrida para sql 2000, pero al ejecutarlarla en sql
2005 salen resultados distintos, parece que no agrupa. Alguien me puede
ayudar?, existe algún convertidor de sql's de 2000 a 2005 ?

Gracias, saludos y feliz año.


SELECT TOP 100 PERCENT sqlEpigrafe.idepigrafe,
sqlEpigrafe.idsubepigrafe,
> > isnull(sqlEpigrafe.idpropuesta, 0) as idpropuesta,
> > isnull(sqlEpigrafe.idcertificacion, 0) as idcertificacion,
> > CONVERT(varchar(10),MAX(sqlEpigrafe.fechainicio),103) as fechainicio,
> > CONVERT(varchar(10),MAX(sqlEpigrafe.fechafin),103) as fechafin,
> > MAX(sqlEpigrafe.tituloEpigrafe) as tituloEpigrafe,
> > MAX(sqlEpigrafe.textoEpigrafe) as textoEpigrafe,
> > MAX(sqlEpigrafe.tituloSubepigrafe) as tituloSubepigrafe,
> > MAX(sqlEpigrafe.textoSubepigrafe) as textoSubepigrafe,
> > MAX(sqlEpigrafe.codigoPres) as codigoPres,
> > MAX(sqlEpigrafe.conceptoPres) as conceptoPres,
> > SUM(ISNULL(sqlEpigrafe.PRES, 0)) AS presupuesto,
> > SUM(isnull(sqlTotal.totalF + sqlTotal.totalN,0)) as total,
> > isnull(SUM((sqlTotal.totalF + sqlTotal.totalN) * 100 /
> > sqlEpigrafe.PRES),0) as porcTotal
> >
> > FROM (SELECT E.idepigrafe, S.idsubepigrafe, P.idpropuesta,
> > C.idcertificacion, MAX(fechainicio) as fechainicio, MAX(fechafin)
as fechafin,
> > MAX(E.titulo) AS tituloEpigrafe, MAX(S.titulo) AS
tituloSubepigrafe,
> > MAX(E.texto) AS textoEpigrafe, MAX(S.texto) AS textoSubepigrafe,
> > MAX(P.presupuesto) AS PRES, MAX(P.codigo) as codigoPres,
MAX(P.concepto)
> > as conceptoPres
> > FROM sge.Epigrafes E LEFT JOIN
> > sge.Subepigrafes S
LEFT JOIN
> > sge.PROPUESTAS P LEFT
OUTER JOIN
> > sge.Propuestas_certificaciones PC INNER JOIN
> > sge.Certificaciones C
> > ON C.idcertificacion = PC.idcertificacion ON
PC.idpropuesta > > > P.idpropuesta ON P.idsubepigrafe = S.idsubepigrafe ON E.idepigrafe > > > S.idepigrafe
> > GROUP BY E.idepigrafe, S.idsubepigrafe,
> > P.idpropuesta, C.idcertificacion) sqlEpigrafe
> > INNER JOIN
> > (SELECT idpropuesta, idcertificacion,
> > SUM(subvencionado) AS totalF, 0 as totalN
> > FROM
sge.Facturas
> > GROUP BY idpropuesta,
> > idcertificacion
> > UNION
> > SELECT N.idpropuesta,
N.idcertificacion, 0
> > as totalF, SUM(subvencionadoN + subvencionadoSS) as totalN
> > FROM
> > sge.Personal P INNER JOIN
> >
sge.Nominas N ON
> > P.idpersonal = N .idpersonal
> > GROUP BY N.idpropuesta,
> > idcertificacion) sqlTotal
> >
> > ON sqlEpigrafe.idpropuesta = sqlTotal.idpropuesta AND
> > sqlEpigrafe.idcertificacion = sqlTotal.idcertificacion
> > GROUP BY sqlEpigrafe.idepigrafe, sqlEpigrafe.idsubepigrafe,
> > sqlEpigrafe.idpropuesta, sqlEpigrafe.idcertificacion
> > ORDER BY MAX(sqlEpigrafe.tituloEpigrafe),
> > MAX(sqlEpigrafe.tituloSubepigrafe),
> > MAX(CONVERT(real,sqlEpigrafe.codigoPres)),
> > MAX(sqlEpigrafe.fechainicio)
Respuesta Responder a este mensaje
#2 TR
03/01/2007 - 13:31 | Informe spam
Estoy haciendo lo siguiente:

select * from vistaInforme2 ORDER BY MAX(sqlEpigrafe.tituloEpigrafe),
MAX(sqlEpigrafe.tituloSubepigrafe),
MAX(CONVERT(real,sqlEpigrafe.codigoPres)), MAX(sqlEpigrafe.fechainicio)

y me sale el siguiente error en el query analizer:

Servidor: mensaje 107, nivel 16, estado 2, línea 1
The column prefix 'sqlEpigrafe' does not match with a table name or alias
name used in the query.
Servidor: mensaje 107, nivel 16, estado 1, línea 1
The column prefix 'sqlEpigrafe' does not match with a table name or alias
name used in the query.
Servidor: mensaje 107, nivel 16, estado 1, línea 1
The column prefix 'sqlEpigrafe' does not match with a table name or alias
name used in the query.
Servidor: mensaje 107, nivel 16, estado 1, línea 1
The column prefix 'sqlEpigrafe' does not match with a table name or alias
name used in the query.


que debo hacer?. Muchas gracias,

Saludos,


Antonio Soto escribió:
Hola TR,

El problema está con el Order By dentro de la vista. SQL 2000 soportaba
el truco de poner el TOP 100 PERCENT y así poder ordenar, pero esa era
una característica no documentada, que han quitado en SQL SErver 2005.
Quita el TOP 100 PERCENT y el order by y haz la ordenación desde la
llamada a la vista

Saludos

Respuesta Responder a este mensaje
#3 Antonio Soto
03/01/2007 - 13:50 | Informe spam
Claro TR, debes de cambiar sqlEpigrafe por el nombre de la bista. Además,
esos MAX ya los estás calculando en la bista, por lo que debes de hacer
referencia al nombre de campo que les diste en la vista

Saludos

Antonio Soto
Solid Quality Learning
http://www.sqlu.com
Disclaimer: This communication is an original work and represents my sole
views on the subject. It does not represent the views of any other person
or entity either by inference or direct reference
"TR" wrote in message
news:
Estoy haciendo lo siguiente:

select * from vistaInforme2 ORDER BY MAX(sqlEpigrafe.tituloEpigrafe),
MAX(sqlEpigrafe.tituloSubepigrafe),
MAX(CONVERT(real,sqlEpigrafe.codigoPres)), MAX(sqlEpigrafe.fechainicio)

y me sale el siguiente error en el query analizer:

Servidor: mensaje 107, nivel 16, estado 2, línea 1
The column prefix 'sqlEpigrafe' does not match with a table name or alias
name used in the query.
Servidor: mensaje 107, nivel 16, estado 1, línea 1
The column prefix 'sqlEpigrafe' does not match with a table name or alias
name used in the query.
Servidor: mensaje 107, nivel 16, estado 1, línea 1
The column prefix 'sqlEpigrafe' does not match with a table name or alias
name used in the query.
Servidor: mensaje 107, nivel 16, estado 1, línea 1
The column prefix 'sqlEpigrafe' does not match with a table name or alias
name used in the query.


que debo hacer?. Muchas gracias,

Saludos,


Antonio Soto escribió:
Hola TR,

El problema está con el Order By dentro de la vista. SQL 2000 soportaba
el truco de poner el TOP 100 PERCENT y así poder ordenar, pero esa era
una característica no documentada, que han quitado en SQL SErver 2005.
Quita el TOP 100 PERCENT y el order by y haz la ordenación desde la
llamada a la vista

Saludos

Respuesta Responder a este mensaje
#4 TR
03/01/2007 - 21:53 | Informe spam
Muchas gracias Antonio,

Feliz año !!!

Saludos,

Antonio Soto escribió:
Claro TR, debes de cambiar sqlEpigrafe por el nombre de la bista.
Además, esos MAX ya los estás calculando en la bista, por lo que debes
de hacer referencia al nombre de campo que les diste en la vista

Saludos

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida