Error interno de SQL

20/05/2008 - 19:50 por Francisco | Informe spam
Que tal señores. El siguietne T-SQL me genera un mensaje de "Error interno
de SQL" Error 8624. Analizando es por la expresion
"SubString(d1.codscc,3,2)" que esta en la subconsulta interna. La pregunta
es porque el error si es una comparacion simple de cadena y la consulta es
simple.
Tengo SQL 2000 STANDAR EDITION SERVICE PACK 2. SERVER WK2000.

/*Obtener los saldos a un mes antes y del mes*/
SELECT SubString(codscc,3,2) As codtie,
saldoant = (SELECT SUM(debe-haber) FROM tbldiario d2 WHERE
SubString(d2.codscc,3,2)=SubString(d1.codscc,3,2) And mes_as<4),
SUM(debe) As debe,SUM(haber) As haber,SUM(debe-haber) As saldo
FROM tbldiario d1 WHERE mes_as=4 GROUP BY SubString(codscc,3,2)

Saludos...
 

Leer las respuestas

#1 Gux (MVP)
20/05/2008 - 22:52 | Informe spam
Voy a formatear un poco la consulta para que se lea con más facilidad:

SELECT
SubString(codscc,3,2) As codtie,
saldoant = (
SELECT SUM(debe-haber)
FROM tbldiario d2
WHERE SubString(d2.codscc,3,2)=SubString(d1.codscc,3,2) And mes_as<4
),
SUM(debe) As debe,
SUM(haber) As haber,
SUM(debe-haber) As saldo
FROM
tbldiario d1
WHERE
mes_as=4 GROUP BY SubString(codscc,3,2)


Me temo que el problema es que SubString(d1.codscc,3,2) está referenciando a
d1.codscc, un objeto sobre el cual no tiene visibilidad la subconsulta,
debido a que el alias d1 está definido en la consulta contenedora de la
subconsulta.

Observo que está intentando hacer un auto-join de TblDiario consigo misma.P
uede usted explicar qué es lo que necesita hacer?

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Francisco" wrote:

Que tal señores. El siguietne T-SQL me genera un mensaje de "Error interno
de SQL" Error 8624. Analizando es por la expresion
"SubString(d1.codscc,3,2)" que esta en la subconsulta interna. La pregunta
es porque el error si es una comparacion simple de cadena y la consulta es
simple.
Tengo SQL 2000 STANDAR EDITION SERVICE PACK 2. SERVER WK2000.

/*Obtener los saldos a un mes antes y del mes*/
SELECT SubString(codscc,3,2) As codtie,
saldoant = (SELECT SUM(debe-haber) FROM tbldiario d2 WHERE
SubString(d2.codscc,3,2)=SubString(d1.codscc,3,2) And mes_as<4),
SUM(debe) As debe,SUM(haber) As haber,SUM(debe-haber) As saldo
FROM tbldiario d1 WHERE mes_as=4 GROUP BY SubString(codscc,3,2)

Saludos...



Preguntas similares