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

Postgresql में TRUE/FALSE चिह्नों के साथ पिवट करें

मैंने थोड़ा प्रयोग किया और यही मैं लेकर आया।

# Reading the data into a table

SELECT * INTO crosstab_test FROM 
(VALUES (20180101,'001','Dog','Asthma','Mucus'),
(20180101,'001','Dog','Asthma','Noisy'),
(20180101,'001','Dog','Asthma','Respiratory'),
(20180102,'002','Cat','Osteoarthritis','Locomotor'),
(20180102,'002','Cat','Osteoarthritis','Limp'),
(20180131, '003', 'Bird', 'Avian Pox','Itchy')) as a (date, id, species, illness, tag);

SELECT DISTINCT date, id, species, illness, mucus, noisy, locomotor, respiratory,  limp, itchy 
FROM 
(SELECT "date", id, species, illness
FROM crosstab_test) a
INNER JOIN             
(SELECT * FROM crosstab(
'SELECT id, tag, ''TRUE'' FROM crosstab_test ORDER BY 1,2,3',
'SELECT DISTINCT tag FROM crosstab_test ORDER BY 1')
as tabelle (id text, Itchy text, Limp text, Locomotor text, Mucus text, Noisy text, Respiratory text)) b
USING(id)
ORDER BY 1;


   date   | id  | species |    illness     | mucus | noisy | locomotor | respiratory | limp | itchy
----------+-----+---------+----------------+-------+-------+-----------+-------------+------+-------
 20180101 | 001 | Dog     | Asthma         | TRUE  | TRUE  |           | TRUE        |      |
 20180102 | 002 | Cat     | Osteoarthritis |       |       | TRUE      |             | TRUE |
 20180131 | 003 | Bird    | Avian Pox      |       |       |           |             |      | TRUE
(3 Zeilen)

यदि आप कॉलम के क्रम की परवाह नहीं करते हैं तो आप बस SELECT DISTINCT * ... कर सकते हैं

NULL को बदलना FALSE के साथ आपके द्वारा कहे गए 350 टैगों को देखते हुए शायद थोड़ा मुश्किल होने वाला है। तो मैं उन्हें दूर जाने का सुझाव देता हूं। यदि आप उन्हें चाहते हैं तो आप SELECT DISTINCT date, id, species, illness, COALESCE(mucus, 'FALSE'), COALESCE(noisy, 'FALSE'),... कर सकते हैं

हालांकि आपको जिस कड़वी गोली को निगलना होगा, वह सभी 350 टैग को text . प्रकार के कॉलम के रूप में निर्दिष्ट करना है as the tabelle (id text, Itchy text, Limp text, Locomotor text, Mucus text, Noisy text, Respiratory text) -क्रॉसस्टैब स्टेटमेंट का हिस्सा। 'SELECT DISTINCT tag FROM crosstab_test ORDER BY 1' द्वारा निर्धारित अनुसार उन्हें सही क्रम में रखना सुनिश्चित करें। क्रॉसस्टैब-स्टेटमेंट में भी।

आशा है कि आप यही खोज रहे थे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pg_restore:[संग्रहकर्ता] फ़ाइल हेडर में असमर्थित संस्करण (1.13)

  2. वर्चर स्ट्रिंग को संख्यात्मक के रूप में ऑर्डर करें

  3. जावा में तैयार बयानों के साथ कस्टम एसक्यूएल प्रकारों में सम्मिलित करना

  4. PostgreSQL में भविष्य के समय का प्रतिनिधित्व

  5. पैरामीटर का उपयोग कर npgsql के लिए कथन