Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

स्ट्रिंग मानों के साथ mysql पिवट तालिका

mysql . के संस्करण के आधार पर आप उपयोग कर रहे हैं, यहां एक दृष्टिकोण है जो row_number स्थापित कर रहा है प्रति समूह, फिर conditional aggregation . का उपयोग करके उस पंक्ति संख्या द्वारा समूहीकृत:

select 
    rn, 
    max(case when stuff = 'bag' then name end) 'bag',
    max(case when stuff = 'book' then name end) 'book',
    max(case when stuff = 'shoes' then name end) 'shoes' 
from (
  select *, row_number() over (partition by stuff order by name) rn
  from stuff_table
) t
group by rn

चूंकि आप mysql . के पुराने संस्करण का उपयोग कर रहे हैं , आपको user-defined variables . का उपयोग करने की आवश्यकता होगी पंक्ति संख्या स्थापित करने के लिए। बाकी फिर वही काम करता है। यहां एक उदाहरण दिया गया है:

select 
    rn, 
    max(case when stuff = 'bag' then name end) 'bag',
    max(case when stuff = 'book' then name end) 'book',
    max(case when stuff = 'shoes' then name end) 'shoes' 
from (
  select *, 
  ( case stuff 
         when @curStuff
         then @curRow := @curRow + 1 
         else @curRow := 1 and @curStuff := stuff 
   end
  ) + 1 AS rn
  from stuff_table, (select @curRow := 0, @curStuff := '') r
  order by stuff
) t
group by rn


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पायथन - MySQL इंडेक्स को स्वचालित करना:पासिंग पैरामीटर

  2. मौजूदा MySQL डेटाबेस से रिवर्स इंजीनियर SQLAlchemy घोषणात्मक वर्ग परिभाषा?

  3. InnoDB MySQL 5.5 में टेक्स्ट बनाम VARCHAR। प्रत्येक का उपयोग कब करें

  4. MySQL तालिका से एकल यादृच्छिक पंक्ति का चयन करने में समस्या

  5. एक MySQL क्लस्टर बनाना, कई सर्वरों पर mysql-server docker कंटेनरों का उपयोग करना