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)
 

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)

Preguntas similares