sql >> Databáze >  >> RDS >> Mysql

Jak získat podobnou hodnotu v Oracle

Zde je řešení, které by fungovalo pro MySQL. Používá korelovaný poddotaz v klauzuli select k seskupení zřetězení Col2 hodnoty. Logika je taková, že agregujeme pouze hodnoty, které jsou menší nebo rovné aktuálnímu řádku, pro danou skupinu záznamů sdílejících stejný Col1 hodnotu.

SELECT
    Col1,
    (SELECT GROUP_CONCAT(t2.Col2 ORDER BY t2.Col2) FROM yourTable t2
     WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
    t1.Col1,
    t1.Col2;

Ukázka

Zde je stejný dotaz v Oracle:

SELECT
    Col1,
    (SELECT LISTAGG(t2.Col2, ',') WITHIN GROUP (ORDER BY t2.Col2) FROM yourTable t2
     WHERE t2.Col2 <= t1.Col2 AND t1.Col1 = t2.Col1) Col2
FROM yourTable t1
ORDER BY
    t1.Col1,
    t1.Col2;

Ukázka

Všimněte si, že jedinou skutečnou změnou je nahrazení LISTAGG pro GROUP_CONCAT .



  1. Správa souborů MDF na serveru SQL Server 2019

  2. Přístup k sadám výsledků z uložených procedur Transact-SQL SQL Server

  3. Chybí služba Mysql

  4. Jak získat údaje o prodeji za poslední 3 měsíce v MySQL