Código:
Funciona bien casi siempre excepto cuando IDPadre es nulo. En realidad sólo hay un registro en tabTaxa donde IDPadre es nulo, pero tiene IDTipo < 13, por lo que no necesitaría de las tablas con alias padre1 y padre2. Había pensado en poner un condicional de este modo:ALTER PROCEDURE PA_BuscaTaxa ( @nome varchar(250) ) AS BEGIN DECLARE @tabla TABLE (ID int, Nombre nvarchar(250)) INSERT INTO @tabla SELECT (CASE WHEN tax.SinonimoDe IS NOT NULL THEN tax.SinonimoDe ELSE tax.ID END) AS "ID", (CASE WHEN tax.IDTipo = 14 THEN RTRIM(padre2.Nombre)+' '+RTRIM(padre1.Nombre)+' subsp. '+RTRIM(tax.Nombre) WHEN tax.IDTipo = 13 THEN RTRIM(padre1.Nombre)+' '+RTRIM(tax.Nombre) WHEN tax.IDTipo < 13 THEN RTRIM(tax.Nombre) END) AS "Nombre" FROM tabTaxa as tax INNER JOIN tabTaxa AS padre1 ON padre1.ID = tax.IDPadre LEFT JOIN tabTaxa AS padre2 ON padre2.ID = padre1.IDPadre WHERE tax.Activado = 1 SELECT * FROM @tabla WHERE Nombre LIKE '%'+@nome+'%' END
Código:
¿Alguna idea?... INNER JOIN tabTaxa AS padre1 ON padre1.ID = (CASE WHEN tax.IDPadre IS NOT NULL THEN tax.IDPadre ELSE ¿? END) ...
Gracias y un saludo.