2012-01-19 18 views
6

मैं MySQL का उपयोग कर रहा हूं। इस तालिका में मैंक्या MySQL में क्रॉसस्टैब/पिवट क्वेरी का उपयोग करना संभव है?

supplier_ID Item_ID Date     Price QTY 
1    1   2012-01-01 00:00:00 500.00 2 
1    1   2012-01-03 00:00:00 450.00 10 
2    1   2012-01-01 00:00:00 400.00 5 
3    1   2012-05-01 00:00:00 500.00 1 

मैं एक का चयन इस तरह एक मेज कुछ दिखा क्वेरी की जरूरत है।

supplier_ID  2012-01-01 2012-01-03 2012-05-01 
1    500.00(2) 450.00(10) null 
2    400.00(5) null   null 
3    null   null   500.00(1) 
+0

हमम .. अच्छा सवाल ... मुझे लगता है कि पहले यह संभव है? –

उत्तर

6

आपने इस क्वेरी का उपयोग कर सकते हैं -

SELECT 
    supplier_id, 
    MAX(IF(date = '2012-01-01', value, NULL)) AS '2012-01-01', 
    MAX(IF(date = '2012-01-03', value, NULL)) AS '2012-01-03', 
    MAX(IF(date = '2012-05-01', value, NULL)) AS '2012-05-01' 
FROM (
    SELECT supplier_id, DATE(date) date, CONCAT(SUM(price), '(', qty, ')') value FROM supplier 
    GROUP BY supplier_id, DATE(date) 
    ) t 
    GROUP BY supplier_id; 

+-------------+------------+------------+------------+ 
| supplier_id | 2012-01-01 | 2012-01-03 | 2012-05-01 | 
+-------------+------------+------------+------------+ 
|   1 | 500.00(2) | 450.00(10) | NULL  | 
|   2 | 400.00(5) | NULL  | NULL  | 
|   3 | NULL  | NULL  | 500.00(1) | 
+-------------+------------+------------+------------+ 

यह आप चाहते हैं परिणाम पैदा करता है। लेकिन यदि आप इसे गतिशील रूप से करना चाहते हैं, तो इस लेख 'ऑटोमेट पिवट टेबल क्वेरीज' - http://www.artfulsoftware.com/infotree/queries.php#523, या यह लिंक - Dynamic pivot tables पर एक लेख देखें।

0
SELECT supplier_ID, 
    CONCAT(SUM(IF(`date`='2012-01-01',ROUND(Price,2),NULL)), '(', SUM(IF(`date`='2012-01-01',QTY,NULL)), ')') AS '2012-01-01', 
    CONCAT(SUM(IF(`date`='2012-01-03',ROUND(Price,2),NULL)), '(', SUM(IF(`date`='2012-01-03',QTY,NULL)), ')') AS '2012-01-03', 
    CONCAT(SUM(IF(`date`='2012-05-01',ROUND(Price,2),NULL)), '(', SUM(IF(`date`='2012-05-01',QTY,NULL)), ')') AS '2012-05-01' 
FROM supplier 
GROUP BY supplier_ID 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^