sql >> Databasteknik >  >> RDS >> Oracle

hur man delar upp kolumnerna i resultatet av frågan i Oracle-databasen

Använd en PIVOT och ROW_NUMBER analytisk funktion:

SQL-fiol

Oracle 11g R2 Schema Setup :

CREATE TABLE your_query_result (sal, cat, id, shop ) AS
SELECT 1900,   '34R5',   10,   'dense' FROM DUAL UNION ALL
SELECT 1900,   '34r5',   10,   'SVM' FROM DUAL UNION ALL
SELECT 1900,   '34r5',   10,   'bpo' FROM DUAL UNION ALL
SELECT 2345,   '3ER4',   11,   'kpo' FROM DUAL UNION ALL
SELECT 2345,   '3ER4',   11,   'infra' FROM DUAL UNION ALL
SELECT 12345,  '34F4',   12,   'const' FROM DUAL;

Fråga 1 :

SELECT sal,
       cat,
       id,
       "1_SHOP" AS shop_1,
       "2_SHOP" AS shop_2,
       "3_SHOP" AS shop_3
FROM   (
  SELECT r.*,
         ROW_NUMBER() OVER (
           PARTITION BY sal, cat, id
           ORDER BY shop
         ) AS rn
  FROM   (
    SELECT * FROM your_query_result
  ) r
)
PIVOT (
  MAX( shop ) AS shop
  FOR rn IN ( 1, 2, 3 )
)

Resultat :

|   SAL |  CAT | ID | SHOP_1 | SHOP_2 | SHOP_3 |
|-------|------|----|--------|--------|--------|
|  1900 | 34R5 | 10 |  dense | (null) | (null) |
|  1900 | 34r5 | 10 |    SVM |    bpo | (null) |
|  2345 | 3ER4 | 11 |  infra |    kpo | (null) |
| 12345 | 34F4 | 12 |  const | (null) | (null) |

Om du vill ha den första och andra raden på samma rad, ändra bara CAT kolumnen ska vara med gemener innan du genererar ROW_NUMBER och PIVOT ing.




  1. Summa resultaten av några frågor och hitta topp 5 i SQL

  2. Få data från mysql-databasen med php och jquery ajax

  3. mysql i xampp startar och slutar på fem sekunder

  4. ORA-00933:SQL-kommandot avslutades inte korrekt när flera rader infogades