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

 

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

sql crosstab

Îåêßíçóå áðü ôï ìÝëïò Bill . Τελευταία δημοσίευση από το μέλος Antonios Chatzipavlis στις 06-04-2010, 23:57. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-04-2010, 14:21 57953

    sql crosstab

     Προσπαθώ να φτιάξω μια stored procedure η οποία θα μου μετατρέπει-επιστρέφει το query μου σαν cross tab . Είναι εφικτό κατι τέτοιο ?

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  06-04-2010, 14:56 57954 σε απάντηση της 57953

    Απ: sql crosstab

    Εαν είσαι σε SQL Server 2005 και πάνω δες την PIVOT
    Antonios Chatzipavlis

  •  06-04-2010, 15:37 57956 σε απάντηση της 57954

    Απ: sql crosstab

    Δεν μου αρκεί η pivot διότι θέλω δυναμικό cross tab κατι γενικό δηλαδή.. για αυτό το ψαχνω σαν stored procedure...

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  06-04-2010, 20:54 57962 σε απάντηση της 57956

    Απ: sql crosstab

    Δυναμικό cross tab σε raw data είναι απαγορευτικό σε performance μιας και υποθέτω ότι θα μιλάμε για όγκο εγγραφών με αρκετά επίπεδα και aggregations.

    Σε αυτή την περίπτωση θα σου προτείνω μια OLAP λύση που και για τέτοια είναι φτιαγμένη.

    Μια μεσοβέζικη λύση είναι να φτιάξεις, κάτι που να είναι κοντά σε αυτό που θέλεις,  ένα πίνακα και με τους κατάλληλους triggers να τον ενημερώνεις αλλά και αυτά βέβαια έχει το κόστος του στο transaction.

    Τέλος αν το θες με sp δοκίμασε να το κάνεις με χρήση της excecute και dynamic sql build στο οποίο να κτίζεις την  PIVOT, αλλά και πάλι θα το κρίνεις όχι από το αν πήρες το αποτέλεσμα αλλά πόσο κόστος έχει.

     


    Antonios Chatzipavlis

  •  06-04-2010, 22:22 57963 σε απάντηση της 57962

    Απ: sql crosstab

    βρηκα την παρακάτω store procedure
    http://weblogs.sqlteam.com/jeffs/archive/2005/05/02/4842.aspx

    Απ' όσο την δοκίμασα μου κάνει. Τώρα όσον αφορά το performance θα δώ για μεγάλο όγκο δεδομένων. Και επίσης θα προσπαθήσω να το κάνω με OLAP όπως πολυ σωστά λες.

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  06-04-2010, 23:57 57964 σε απάντηση της 57963

    Απ: sql crosstab

    Ωραιότατη είναι.

    Αλλά το πρόβλημα με τα dynamic sql είναι ότι δεν έχει σχεδόν ποτέ το καλύτερο execution plan για αυτό και είμαι επιφυλακτικός μαζί τους.


    Antonios Chatzipavlis

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems