terminada - Problemas con la unión recursiva de SQL en DB2
tablas recursivas mysql (1)
Dependiendo de cómo se defina TEXT, el valor final se puede truncar y luego, dependiendo del cliente que use para ejecutar la consulta, es posible que nunca lo sepa.
Pruebe a enviar TEXT
a un VARCHAR
más largo, por ejemplo
WITH rquery (category, sequence, sentence)
AS (SELECT base.category, base.sequence, CAST( base.text AS VARCHAR(100))
FROM myTable base
...
El tipo de sentence
de datos resultante debe ser lo suficientemente grande como para ajustarse a la concatenación de text
más larga posible.
Soy relativamente novato con la escritura de SQL y parece que no puedo obtener el resultado correcto de mi enunciado recursivo. La tabla fuente es algo como esto:
SEQUENCE TEXT CATEGORY
1 This is apples
2 a complete apples
3 sentence. apples
El resultado que intento obtener es:
CATEGORY TEXT
apples This is a complete sentence.
Sin embargo, el resultado que obtengo es:
CATEGORY TEXT
apples This is a complete
No puedo concatenar esencialmente más de 2 líneas. Creo que tiene algo que ver con el recuento que he configurado en la parte recursiva de mi declaración CON.
WITH rquery (category, sequence, sentence)
AS (SELECT base.category, base.sequence, base.text
FROM myTable base
WHERE sequence = 1
Union ALL
SELECT t1.category, t1.sequence, sentence || '' '' || t1.text
FROM rquery t0, myTable t1
WHERE t0.category = t1.category And t0.sequence + 1 = t1.sequence
)
SELECT * FROM rquery WHERE sequence in (SELECT MAX(sequence) FROM rquery);
Si elimina la última cláusula WHERE, los resultados muestran lo que está sucediendo, pero parece que no puedo encontrar una solución para hacerlo bien. Aquí está sin la última cláusula WHERE:
CATEGORY SEQUENCE SENTENCE
apples 1 This is
apples 2 This is a complete
apples 3 This is a complete