Post

Visualizzazione dei post da novembre, 2016

Da Colonne a Righe

Immagine
Supponiamo di  avere un elenco di prodotti organizzati per categoria come nell'esempio di seguito. select  PROD_SUBCATEGORY ,  PROD_DESC from  sh.products where PROD_SUBCATEGORY in ('CD-ROM','Camera Media'); Realizziamo un report contenente due righe e due colonne in cui ogni riga contiene la categoria e la descrizione dei prodotti associati. select  prod_subcategory , XMLAGG  (  XMLELEMENT (descrizione, PROD_DESC)) .EXTRAXT ('//text()') as Prodotti from  sh.products where prod_subcategory in ('CD-ROM','Camera Media') group by prod_subcategory ; Per le funzioni XMLAGG e XMLELEMENT andare al post seguente.  link

Funzione XMLELEMENT - XMLAGG

Immagine
XMLELEMENT è una funzione che crea un documento XML. Il primo argomento passato è il nome del Tag che non può essere il nome di una colonna, una espressione  o il valore "null". Il secondo argomento invece è una colonna, una stringa, un numero o una espressione. E s e m p i o select XMLELEMENT( categoria ,PROD_SUBCATEGORY ) as Categoria from  sh.products; Nell'esempio viene generato un xml con Tag CATEGORIA e il nome della categoria come valore.  E' possibile annidare più funzioni XMLELEMENT  per avere oltre la categoria anche la descrizione del prodotto. select XMLELEMENT (prodotto, XMLELEMENT(categoria ,PROD_SUBCATEGORY ), XMLELEMENT (descrizione, PROD_DESC) )as risultato from  sh.products where PROD_SUBCATEGORY ='CD-ROM'; La funzione XMLAGG è una funzione aggregata che prende come input più righe di XML e genera un solo documento XML. Nell'esempio di prima il risultato è una sola riga. select XMLAGG  ( XMLELEME