Consulta con concatenación en sql developer

369xx

Bovino adolescente
#1
hola buen día

tengo duda de como hacer una consulta a la siguiente tabla:

la tabla se llama: tcd_periodo

la cual trae los siguientes campos:

periodo
mes
descripcion

periodo es numero
mes es numero
descripcion es varchar

cuando hago la consulta basica: select * from tcd_periodo

me trae:

periodo mes descripcion
1 1 enero
1 2 febrero
1 3 marzo
1 4 abril
1 5 mayo
1 6 junio

lo que yo quiero es generar una consulta que me traiga: enero-junio (para periodo 1)
julio-diciembre (para periodo 2)
osea que me traiga concatenado enero - junio asi tal cual, lo único que he conseguido es que me traiga todos los meses concatenados, pero sólo quiero el primero (en este caso enero) y el ultimo (en este caso junio) concatenados, si alguien me pudiera dar una pista para ayudarme se los agradecería, ya estuve probando varias cosas y no me sale ;)

Saludos!:vientos:
 

zeudio

Bovino adicto
#2
con un par de subconsultas, donde selecciones en una el mes mas bajo de la temporada y en el otro el mes mas alto y los concatenas
 

CompuDoc

Bovino adicto
#3
Código:
IF OBJECT_ID('tempdb..#TMP01') IS NOT NULL DROP TABLE #TMP01

SELECT     IDPeriodo, MIN(IDMes) AS IDMesMinimo, MAX(IDMes) AS IDMesMaximo
INTO #TMP01
FROM         tcd_periodo
GROUP BY IDPeriodo

SELECT
	IDPeriodo,
	A.NombreMes AS MesInicial,
	B.NombreMes AS MesFinal
FROM #TMP01
	INNER JOIN cat_meses A ON #TMP01.IDMesMinimo = A.IDMes
	INNER JOIN cat_meses B ON #TMP01.IDMesMaximo = B.IDMes
No es la solución mas elegante, ya que incluye una tabla temporal.
Ademas, rompes una regla de la normalizacion al meter en nombre de mes es esa tabla, mejor crea otra "tabla_de_meses" y asi no repites tanto los meses.

Esta solución no te concatena los campos, pero tu, en tu sistema o reporte puedes concatenarlos.

Se me olvidaba, est funciona dentro de un stored procedure.
 
Arriba