Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

δυναμικό pivot και ^%$@#%

Îåêßíçóå áðü ôï ìÝëïò agmarios. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 21-10-2006, 00:20. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-10-2006, 15:46 18759

    δυναμικό pivot και ^%$@#%

    υπάρχει κανένα άρθρο ή παράδειγμα για το πώς μπορώ να δηλώσω δυναμικά τις τιμές του <column_list> στο pivot statement;

     

  •  18-10-2006, 17:26 18766 σε απάντηση της 18759

    Απ: δυναμικό pivot και ^%$@#%

    Εν συντομία, ατύχησες. Το pivot δεν επιτρέπει τον ορισμό δυναμικής λίστας. Ο μόνος τρόπος είναι να φτιάξεις ένα sql string και να το εκτελέσεις.

    Εδώ που τα λέμε, η συγκεκριμένη εντολή δεν είναι τόσο χρήσιμη όσο φαίνεται. Το ίδιο αποτέλεσμα μπορείς να πετύχεις με ένα group by. Το pivot απλά σε γλυτώνει από μερικές γραμμές sql. Ακόμα και το execution plan που δημιουργείται για το pivot είναι όμοιο με του group by.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-10-2006, 17:39 18767 σε απάντηση της 18766

    Απ: δυναμικό pivot και ^%$@#%

    το ξέρω, αλλά έχω βρει 1-2 άρθρα http://jbjgroup.com/dblog/2005/01/dynamic-pivot.html που το κάνουν (παράγουν το sql και το τρέχουν με exec ) αλλά όταν προσπαθώ να το κάνω στους δικούς μου πίνακες δενSad γι αυτό ρωτάω μήπως υπάρχει και καμιά άλλη πηγή.

    όσο για τη χρησιμότητά του όντος στη μόρφη που είναι τώρα θα συμφωνήσω απολύτως αλλά αυτές οι  λίγες γραμμές εντολών επί ένα μεγάλο πλήθος procedures κάτι κάνει.

  •  19-10-2006, 16:11 18830 σε απάντηση της 18759

    Re: δυναμικό pivot και ^%$@#%

    Το είχα ψάξει και εγω πριν λίγο καιρό (είχα διαβάσει και το ΛΙΝΚ) αλλά δυστυχώς δεν βρήκα άλλη λύση... Σταμάτησα τα δυναμικά .... δυστυχώς...
    -------------------------------
    Κ. Γιαγιάς

    Θα ήθελα να είμαι μέσα στην φωτογραφία και όχι εδώ!!!!

    http://beastie06.wordpress.com
  •  19-10-2006, 16:57 18834 σε απάντηση της 18830

    Απ: Re: δυναμικό pivot και ^%$@#%

    κι εγώ έχω αρχίσει να ψάχνομαι με group by. Κρίμα όμως γιατί χωρίς τη δυνατότητα δυναμικόυ ορισμού των στηλών το feature ακυρώνεται ( εκτός αν ξέρεις από πριν τις στήλες βέβαια)

  •  20-10-2006, 15:11 18900 σε απάντηση της 18766

    Απ: δυναμικό pivot και ^%$@#%

     pkanavos wrote:
    Το ίδιο αποτέλεσμα μπορείς να πετύχεις με ένα group by.


    έχουμε κάνα παραδειγματάκι σχετικά με το πώς επιτυγχάνεται αυτό;

    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  21-10-2006, 00:20 18941 σε απάντηση της 18900

    Απ: δυναμικό pivot και ^%$@#%

    Πες ότι έχεις ένα πίνακα με τις πωλήσεις προϊόντων ανά μήνα και πελάτη. Το pivot μπορείς να το κάνεις με



    select ProductID,CustomerID
       SUM(CASE WHEN Month=1 THEN Sales END) As January,
       SUM(CASE WHEN Month=2 THEN Sales END) As February,
       ...
    From ProductCustomerSales
    Group By ProductID, CustomerID

    Η ίδια δουλειά με την εντολή Pivot γίνεται:



    SELECT ProductID, CustomerID, 
       [1] AS January,
       [2] AS February,
       ...
    FROM ProductCustomerSales
       PIVOT (SUM(Sales) FOR Month IN ([1],[2]...)) AS P

    Αν τώρα τα δύο SELECT μοιάζουν μεταξύ τους ... μάλλον δεν είναι τυχαίο. Ακόμα και το ίδιο execution plan βγάζουν! Το μόνο που κερδίζεις με το PIVOT είναι τα CASE WHEN.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems