mit temporären Tabellen in SQL Azure

Schreibe ich eine Abfrage, um schwenkbarer Tisch-Elementen, wo die Spalte name wird dynamisch generiert.

SET @query = N'SELECT STUDENT_ID, ROLL_NO, TITLE, STUDENT_NAME, EXAM_NAME, '+
            @cols +
            ' INTO ##FINAL 
            FROM
            (
                SELECT  *
                FROM #AVERAGES
                UNION 
                SELECT  *
                FROM #MARKS 
                UNION
                SELECT  *
                FROM #GRACEMARKS
                UNION
                SELECT  *
                FROM #TOTAL
                ) p
                PIVOT
                (
                MAX([MARKS])
                FOR SUBJECT_ID IN
                ( '+
                @cols +' )
            ) AS FINAL
            ORDER BY STUDENT_ID ASC, DISPLAYORDER ASC, EXAM_NAME ASC;'

EXECUTE(@query) 

select * from ##FINAL 

Diese Abfrage funktioniert in meiner lokalen Datenbank, aber es funktioniert nicht in SQL Azure, da Globale temporäre Tabellen sind dort nicht erlaubt.

Nun, wenn ich eine änderung ##FINAL #FINAL in meiner lokalen Datenbank, aber es gibt mir Fehler wie

Ungültiger Objektname '#FINAL' .

Wie kann ich dieses Problem beheben?

  • Ich glaube nicht, dass Ihr problem gelöst werden kann, da Sie versuchen zu konstruieren, die etwas (ein ResultSet mit einer Variablen Anzahl von Spalten), die nicht gut unterstützt, die von SQL. Im Allgemeinen Fall, diese Arbeit zu machen, hätten Sie zum erstellen der temp Tabelle in dem äußeren Umfang (d.h. vor der EXECUTE), aber Sie können nicht tun, wenn Sie nicht wissen, welche Spalten, die Sie gehen zu müssen.
  • Tatsächlich versuchte ich es bereits , habe ich eine temp in der Lage und setzen Sie die Spalte von Namen, die in @ in es . es dient nicht irgendeinem Zweck, da konnte ich nicht verwenden Sie es in der in-Klausel . ich.e FÜR SUBJECT_ID IN (SELECT cast(subject_id AS NVARCHAR), der AUS #SUBJECT_ID_TABLE )
  • Nein, der Punkt war das erstellen der #Final temp-Tabelle vor den EXECUTE - das ist der einzige Weg, um Zugang zu beiden Bereichen. Ich habe Ihnen gezeigt, eine Möglichkeit, die funktionieren könnte in meiner Antwort.
Schreibe einen Kommentar