sql >> Databáze >  >> RDS >> Oracle

PIVOT Oracle - transformace dat z více řádků na jeden řádek s více sloupci, žádná agregovaná data

Neděláte nic s popisem, který se také mění s tagem. Není agregován, takže je v implicitním 'group by', takže v sadě výsledků získáte samostatné řádky.

Můžete to také zachytit pomocí jiného (fiktivního) agregátu:

select * from (
  select * from TEST2 where tag in ('LN', 'SN')
)
PIVOT
(
  max(value) as value, max(description) as description
  for tag in ('LN' as ln, 'SN' as sn)
)
order by category, subcat, item, "Date";

Date      SUBCAT CATEGOR IT LN_VALUE          LN_DESCRIPTION  SN_VALUE          SN_DESCRIPTION
--------- ------ ------- -- ----------------- --------------- ----------------- ---------------
24-OCT-13 290223 1219576 25 1105618           Lot Number      3x12mm            Serial Number  
24-OCT-13 290223 1219576 28 1303757           Lot Number                                       
18-JUN-15 354506 1219576 4  1403114           Lot Number                                       
18-JUN-15 354506 1219576 9  7777777777        Lot Number      9.999999999999E12 Serial Number  

Nebo jej pravděpodobněji vylučte ze sady mezilehlých výsledků, pokud to nechcete, zadáním sloupců, které chcete, namísto použití * :

select * from (
  select category, subcat, item, "Date", tag, value
  from TEST2 where tag in ('LN', 'SN')
)
PIVOT
(
  max(value) for tag in ('LN' as ln, 'SN' as sn)
)
order by category, subcat, item, "Date";

CATEGOR SUBCAT IT Date      LN                SN              
------- ------ -- --------- ----------------- -----------------
1219576 290223 25 24-OCT-13 1105618           3x12mm           
1219576 290223 28 24-OCT-13 1303757                            
1219576 354506 4  18-JUN-15 1403114                            
1219576 354506 9  18-JUN-15 7777777777        9.999999999999E12


  1. Existují nějaké analyzátory pro Oracle DML table_reference?

  2. Získat seznam databází MySQL a verzi serveru?

  3. Vzor regulárního výrazu ve funkci Nahradit SQL?

  4. Proč tato konverze data MySQL vrací NULL?