मुझे डेटाबेस तालिका को सारांशित करने का एक तरीका चाहिए ताकि एक सामान्य आईडी साझा करने वाली पंक्तियों को आउटपुट की एक पंक्ति में सारांशित किया जा सके।एक सारांश ("पिवट"?) तालिका बनाएं
मेरे उपकरण SQLite और Python 2.x हैं।
उदाहरण के लिए, अपने स्थानीय सुपरमार्केट में फल की कीमतों के निम्न तालिका दिया ...
+--------------------+--------------------+--------------------+
|Fruit |Shop |Price |
+--------------------+--------------------+--------------------+
|Apple |Coles |$1.50 |
|Apple |Woolworths |$1.60 |
|Apple |IGA |$1.70 |
|Banana |Coles |$0.50 |
|Banana |Woolworths |$0.60 |
|Banana |IGA |$0.70 |
|Cherry |Coles |$5.00 |
|Date |Coles |$2.00 |
|Date |Woolworths |$2.10 |
|Elderberry |IGA |$10.00 |
+--------------------+--------------------+--------------------+
... मैं मुझे हर सुपरमार्केट में प्रत्येक फल की कीमत दिखा एक सारांश तालिका का उत्पादन करना चाहते हैं। रिक्त स्थान एनयूएलएल द्वारा भरा जाना चाहिए।
+----------+----------+----------+----------+
|Fruit |Coles |Woolworths|IGA |
+----------+----------+----------+----------+
|Apple |$1.50 |$1.60 |$1.70 |
|Banana |$0.50 |$0.60 |$0.70 |
|Cherry |NULL |$5.00 |NULL |
|Date |$2.00 |$2.10 |NULL |
|Elderberry|NULL |NULL |$10.00 |
+----------+----------+----------+----------+
मेरा मानना है कि साहित्य यह एक "पिवट तालिका" या एक "धुरी क्वेरी" कहता है, लेकिन जाहिरा तौर पर SQLite doesn't support PIVOT
. (है कि प्रश्न में समाधान हार्डकोडेड LEFT JOIN
रों उपयोग करता है। यह वास्तव में मेरे लिए अपील नहीं करता है क्योंकि मैं डॉन अग्रिम में "कॉलम" नामों को नहीं जानते हैं।)
अभी मैं पाइथन में पूरी तालिका के माध्यम से इसे फिर से चलाकर dicts
को जमा करता हूं, जो थोड़ा सा है। मैं बेहतर समाधान के लिए खुला हूं, या तो पायथन या SQLite में, जो डेटा को टैब्यूलर रूप में देगा।
'itertools' जादू मेरा पसंदीदा जादू है। किसी और की उम्मीद करना एक SQLite समाधान पोस्ट करेगा, लेकिन यह पहले से ही बेहतर है जो मैं कर रहा था। –
@ ली-ऑंगवाईप एसक्यूलाइट में पिवट टेबल के लिए [कोई समर्थन नहीं] [http://www.sqlite.org/cvstrac/tktview?tn=1424) है, इसलिए स्टैक ओवरफ्लो पर ~ 1000 प्रश्न यहां पूछने के लिए कह रहे हैं। लेकिन एक [पर्ल मॉड्यूल] है (https://github.com/bduggan/SQLite-VirtualTable-Pivot) जो कि एक उदाहरण के साथ [यहां] (http://search.cpan.org/~bduggan/SQLite- VirtualTable धुरी-0.02/lib/SQLite/VirtualTable/Pivot.pm)। – sloth
मैंने इस फ़ंक्शन को लिखने के लिए इसका उपयोग समाप्त कर दिया जो उपरोक्त के रूप में पिवट तालिका बनाता है) और फिर इसे अस्थायी तालिका के रूप में डेटाबेस में वापस लिखता है। यह आपको मुख्य डेटा पर आगे के प्रश्न ('जॉइन, इत्यादि) करने देता है। अस्थायी सारणी बदसूरत हैं क्योंकि सभी बाहर निकलते हैं, लेकिन "अगर यह बेवकूफ है और यह काम करता है, तो यह बेवकूफ नहीं है।" –