Me top con la necesidad de dado un select que tenía subconsulta y esta subconsultas retornaba mas que un registro, Me daba el típico error . Your subquery return more tha one rowS.
Buscando en internet me encontre con GROUP_CONCAT .Para SQLSEVER tambien existeXML PATH .
Asi que con ello solucione el inconveniente.A continuacion mi sql completo como quedo.
Fuente: http://www.joellipman.com/articles/sql/551-mysql-groupconcat-equivalent-in-t-sql-and-oracle.html
Saludos
Adalberto Montanía
Buscando en internet me encontre con GROUP_CONCAT .Para SQLSEVER tambien existeXML PATH .
Asi que con ello solucione el inconveniente.A continuacion mi sql completo como quedo.
select a.idAviso ,b.Categoria,CASE b.Categoria
WHEN 'A' THEN 'Alumno'
WHEN 'N' THEN 'Nivel'
WHEN 'D' THEN 'DIVISION'
WHEN 'C' THEN 'CURSO/GRADO'
WHEN 'E' THEN 'Ex-Alumnos'
WHEN 'B' THEN 'Debito Aut'
ELSE 'Todos'
END as Destinatario, ifnull( Nivel,0) as Codigo,CASE b.Categoria
WHEN 'A' THEN (SELECT GROUP_CONCAT(CONCAT(Codigo,'/ ',NumHermano ) )from matriculados inner join destinatarioaviso dest on matriculados.CodAlumno= dest.Nivel where CodAlumno=dest.Nivel and dest.IdAviso=b.IdAviso )
WHEN 'N' THEN (select GROUP_CONCAT(Descripcion) from mnivel inner join destinatarioaviso dest on mnivel.IdNivel=dest.Nivel where IdNivel=Nivel and dest.IdAviso=b.IdAviso )
WHEN 'D' THEN (select GROUP_CONCAT(Descripcion) from mdivision inner join destinatarioaviso dest on mdivision.IdDivision=dest.Nivel where IdDivision=Nivel and dest.IdAviso=b.IdAviso )
WHEN 'C' THEN (select GROUP_CONCAT( concat(mcursogrado.Descripcion,'-',mseccion.Descripcion)) from mcurso inner join mcursogrado on mcurso.IdCursoGrado =mcursogrado.IdCursoGrado
inner join mseccion on mseccion.IdSeccion = mcurso.IdSeccion inner join destinatarioaviso dest on mcurso.IdCurso= dest.Nivel where mcurso.IdCurso=Nivel and dest.IdAviso=b.IdAviso )
WHEN 'E' THEN 'Ex-Alumnos'
WHEN 'B' THEN 'Debito Aut'
ELSE 'Todos' END as Dirigido,a.FechaIngreso as Fecha, a.TipoAviso , a.Titulo, a.Descripcion from avisosnuevo a inner join destinatarioaviso b on a.idAviso = b.IdAviso where year(a.FechaSistema)= year(now()) group by a.idAviso order by FechaIngreso desc ,a.idAviso desc ;
Fuente: http://www.joellipman.com/articles/sql/551-mysql-groupconcat-equivalent-in-t-sql-and-oracle.html
Saludos
Adalberto Montanía
Comentarios
Publicar un comentario