Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL - Преобразуване на стойности на колони на N реда в N колони в 1 ред

Ако приемем, че не ви интересува в какъв ред се връщат описанията (т.е. Джереми Смит може също толкова правилно да има Description1 или „Объркан“ и Description2 на „Висок“), просто трябва да завъртите номера на реда. Ако ви интересува редът, в който се връщат описанията, можете да добавите ORDER BY клауза към функцията прозорец в ROW_NUMBER аналитична функция

SELECT firstName, 
       lastName,
       MAX( CASE WHEN rn = 1 THEN description ELSE NULL END ) description1,
       MAX( CASE WHEN rn = 2 THEN description ELSE NULL END ) description2,
       MAX( CASE WHEN rn = 3 THEN description ELSE NULL END ) description3
  FROM (SELECT firstName,
               lastName,
               description,
               row_number() over (partition by lastName, firstName) rn
          FROM descriptions
               JOIN people USING (firstName, lastName)
         WHERE age >= 25)
   GROUP BY firstname, lastname

Настрана, надявам се, че всъщност съхранявате рождена дата и изчислявате възрастта на човека, вместо да съхранявате възрастта и да приемате, че хората актуализират възрастта си всяка година.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на обхват на транзакция и заявки

  2. Страниране на резултатите от заявката на Oracle без метод за достъп до данни TABLE FULL SCAN

  3. База данни срещу пространство за таблици, каква е разликата?

  4. Как да дефинирам пакетна процедура на Oracle в H2 за тестване

  5. Какво означават квадратни скоби в Oracle SQL заявка?