PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zapytanie SQL do transpozycji liczby kolumn do liczby wierszy

Tego typu zapytania są łatwiejsze do wykonania przy użyciu funkcji GROUP BY, na przykład:

Select 
case when profile.foo ~* '5.0.2195' then 'Win2k'
     when profile.foo ~* '5.1.2600' then 'WinXP' 
     when profile.foo ~* '5.2.3790' then 'W2k3'
     when (profile.foo ~* '6.0.6000'
        or profile.foo ~* '6.0.6001'
        or profile.foo ~* '6.0.6002') 
        then 'Vista'
     when (profile.foo ~* '6.1.7600'
        or profile.foo ~* '6.1.7601')
        then 'Win7'
     when profile.foo ~* '6.2.9200' then 'Win8'
     when (profile.foo ~* '6.3.9200'
        or profile.foo ~* '6.3.9600')
        then 'Win8.1' ELSE 'Other' END as type,
     count(*) as cnt
From profile
GROUP BY 1

Jak skomentowano poniżej, to zapytanie będzie działać w przypadkach wzajemnie wykluczających się, tj. gdy profile.foo zawiera wartość reprezentującą jeden system operacyjny na wiersz



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Próbuję skonfigurować postgres na OSX

  2. Liquibase usuwa wszystkie funkcje - postgresql

  3. Błąd kodowania w sqlalchemy i postgresql

  4. Transakcja nie obsługuje równoległych poleceń za pośrednictwem Task.WhenAll

  5. Rails 4 Postgresql array-type:aktualizacja wartości