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

Bigquery में चुनें का उपयोग करके पंक्ति डेटा से गतिशील रूप से कॉलम बनाना

नीचे BigQuery के लिए है!

कृपया ध्यान दें:आउटपुट कॉलम नामों के बारे में आपकी अपेक्षाएं सही नहीं हैं!
कॉलम का नाम अंकों से शुरू नहीं हो सकता है - इसलिए नीचे दिए गए उदाहरण में - मैं 1, 2 और 3 के बजाय id_1, id_2 और id_3 का उपयोग करूंगा

SELECT
  SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,
  SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,
  SUM(CASE WHEN id = 3 THEN 1 END) AS id_3
FROM YourTable

उपरोक्त उदाहरण मानता है कि आप अपनी आईडी पहले से जानते हैं और उनमें से बहुत कम हैं इसलिए प्रत्येक आईडी के लिए एसयूएम (...) के साथ मैन्युअल रूप से कुछ पंक्तियों को मैन्युअल रूप से लिखना कोई बड़ी बात नहीं है

यदि यह मामला नहीं है - तो आप नीचे क्वेरी चलाकर पहले उपरोक्त क्वेरी को प्रोग्रामेटिक रूप से उत्पन्न कर सकते हैं

SELECT 'SELECT ' + 
   GROUP_CONCAT_UNQUOTED(
      'SUM(CASE WHEN id = ' + STRING(id) + ' THEN 1 END) AS id_' + STRING(id)
   ) 
   + ' FROM YourTable'
FROM (
  SELECT id FROM (
    SELECT * FROM YourTable GROUP BY id ORDER BY id
)

परिणामस्वरूप - आपको नीचे की तरह स्ट्रिंग मिलेगी

SELECT SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,SUM(CASE WHEN id = 3 THEN 1 END) AS id_3 FROM YourTable

तो, अब बस इसे कॉपी करें और क्वेरी एडिटर में पेस्ट करें और इसे चलाएं

आप इसी तरह का उदाहरण यहां देख सकते हैं - https://stackoverflow.com/a/36623258/5221944




  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. जॉइन करके किसी अन्य तालिका से गैर-मौजूदा डेटा कैसे खोजें?

  3. मैं MySQL में एक सरणी चर का अनुकरण कैसे कर सकता हूं?

  4. अनुरोध URL में तालिका का नाम और फ़ील्ड नाम उजागर करना

  5. MySQL:बिगिंट बनाम int