2016-03-30 10 views
0

Ich versuche, einen Parameter aus einem Excel-Arbeitsblatt mehrere Male in einer SQL-Abfrage zu verwenden, und ich finde keine einfachen Lösungen, während ich denke, es sollte nicht t das so kompliziert sein. Ich arbeite auf dem SQL-Server.Verwenden Sie Parameter mehrmals in SQL-Abfrage in einer Excel-Tabelle

Lassen Sie mich erklären. Ich habe eine Tabelle mit dem Namen DONNEES_CNA, die als Spalten eine Startzeit (STARTIME), eine Endzeit (ENDTIME) und eine Tonnage (TONNAGE) hat. Es gibt die Tonnage (in Tonnen) an, die zwischen Startzeit und Endzeit auf ein Förderband gelangte.

Sagen wir, ich habe jede Stunde Daten. Startzeiten sind wie '2016-03-01 10:00:00' und Endzeiten sagen wir '2016-03-01 10:59:59'.

Wenn ich also die Tonnage zwischen zwei Daten/Stunden wollen, würde meine SQL-Abfrage wie:

DECLARE @DEBUT DATETIME, @FIN DATETIME 
SET @DEBUT = '2016-03-01 09:00:00' 
SET @FIN = '2016-03-01 12:30:00' 

SELECT CASE WHEN STARTTIME >= @DEBUT AND ENDTIME <= @FIN THEN TONNAGE 
     WHEN STARTTIME >= @DEBUT AND ENDTIME > @FIN THEN (TONNAGE)*DATEDIFF(SECOND, STARTTIME, @FIN)/DATEDIFF(SECOND, STARTTIME, ENDTIME) 
     WHEN STARTTIME < @DEBUT AND ENDTIME <= @FIN THEN (TONNAGE)*DATEDIFF(SECOND, @DEBUT, ENDTIME)/DATEDIFF(SECOND, STARTTIME, ENDTIME) 
     WHEN STARTTIME < @DEBUT AND ENDTIME > @FIN THEN (TONNAGE)*DATEDIFF(SECOND, @DEBUT, @FIN)/DATEDIFF(SECOND, STARTTIME, ENDTIME) 
    END 
AS TONNAGE 
FROM DONNEES_CNA 

Es könnte nicht optimiert werden, von einer Art und Weise größere Abfrage extrahiert und nur eine ist Beispiel unter vielen, die ich habe; Die Idee ist nur, dass ich oft nur zwei Parameter verwende.

Es funktioniert gut auf SQL Server, auf SSRS, aber ich kann es nicht auf Excel. Ich möchte nur @DEBUT und @FIN direkt aus meiner Tabelle haben.

Ich versuchte SET @DEBUT = ?, idem für @FIN, die nicht funktioniert. Ich setze oben auf meine Abfrage SET NOCOUNT ON, funktioniert auch nicht. Der erste Fehler ist etwas wie (Entschuldigung mein Excel ist in Französisch): "Parameternummer ist nicht gültig".

folgte ich diese Frage beantworten, die nicht weder funktioniert (oder ich tue es falsch?) : How to add parameters to an external data query in Excel which can't be displayed graphically?

Ich fand dies, aber es würde zu lange dauern mit jedem Parameter zu behandeln: how to pass parameters to query in SQL (Excel)

Ist die einzige Lösung ? jedes Mal, wenn ich einen Parameter habe und jeden Parameter in Excel definieren? Meine Abfrage kann ziemlich lang sein, und diese Parameter können einige hundert Mal erscheinen ...

Ich bin nicht widerwillig, VBA zu verwenden, solange es eine Lösung gibt, die mich nicht hundert Mal auf dasselbe klicken lässt A2 und B2 Zellen, wo mein Parameter wäre ..

Wenn es bereits eine Antwort auf diesen Fall gibt, bitte entschuldigen Sie, ich habe seit langer Zeit ohne Erfolg gesucht.

Danke für Ihre Hilfe!

Antwort

0

Ich habe gerade über gespeicherte Prozedur gelesen, ich habe nicht darüber nachgedacht, und das könnte tatsächlich eine echte Lösung sein, und etwas wie exec procedure_CNA ?, ? tun.

Dies bedeutet nur die Übergabe jeder Abfrage in gespeicherten Prozedur. Wenn es nur eine Excel-Lösung gibt, bin ich mehr interessiert!

Verwandte Themen