sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL skapar olika nivåer av data från en enda tabell

Du kan använda en rekursiv CTE:

WITH CTE(ITEM_VALUE, ITEM_ABOVE, DESCRIPTION, ITEM_GROUP) AS 
(
   SELECT ITEM_VALUE, ITEM_ABOVE, DESCRIPTION, DESCRIPTION AS ITEM_GROUP
   FROM mytable
   WHERE ITEM_ABOVE = 'CAR'

   UNION ALL

   SELECT t1.ITEM_VALUE, t1.ITEM_ABOVE, t1.DESCRIPTION, t2.ITEM_GROUP
   FROM mytable t1
   JOIN CTE t2 ON t1.ITEM_ABOVE = t2.ITEM_VALUE
)
SELECT ITEM_VALUE, ITEM_ABOVE, DESCRIPTION, ITEM_GROUP
FROM CTE 



  1. Konstigt och irriterande fel:Anrop till odefinierad funktion mysql_query()

  2. Indexerar varje kolumn i en tabell

  3. Utlösare för att infoga rader i fjärrdatabas efter radering

  4. sqldeveloper felmeddelande:Nätverksadaptern kunde inte upprätta anslutningsfelet