2016-04-25 5 views
0

Ich frage eine externe Datenbank mit Power-Abfrage durch Excel. Was ich will ist zu tun, um meine where-Klausel bevölkern basierte weg von Zellenwerten so zum Beispiel meiner SQL-Anweisung so etwas wieWie konstruiere ich eine SELECT-Anweisung, die Excel-Zellenwerte enthält?

Select * 
From employees 
where hiredate between Sheet1!A1 and Sheet2!A2 

lesen würde habe ich versucht, die obige Syntax und es funktioniert nicht, aber ich denke, es zeigt, was Ich möchte erreichen.

Wie kann ich Parameter aus meiner Excel-Tabelle in meine Power-Query-Syntax übertragen?

EDIT
Ich habe versucht, die blog.oraylis.de folgende (nicht unbedingt den Link, Link in den Kommentaren ist), aber ich habe die unten Fehlermeldung, wenn ich versuche, meine Aussage

DataSource.Error ODBC:Error[4203] ERROR: column "start_p" does not exist;

I auszuführen eine Tabelle mit dem Namen erstellt es Parameter hinzugefügt Header & Werte, und die volle SQL ich zu laufen versuchen, ist dies:

let 
startp_Param = Excel.CurrentWorkbook(){[Name="Parameter"]}[Content], 
startp_Value = startp_Param {0}[Value], 
endp_Param = Excel.CurrentWorkbook(){[Name="Parameter"]}[Content], 
endp_Value = endp_Param {1}[Value], 
Source = Odbc.Query("dsn=postgresql", "Select * FROM employees where hiredate BETWEEN startp_Value AND endp_Value") 
in 
Source 

EDIT # 2
Ich änderte meine Frage wie diese das jetzt

"Select * 
FROM employees 
where hiredate BETWEEN " & startp_Value & " AND " & endp_Value 

jedoch zu lesen, stellt einen Fehler von:

"We cannot apply operator & to types Text and Number" 
+0

Ich habe keine Zeit zu versuchen, ein Beispiel zu machen, aber hier ist ein paar Links, die helfen sollten. https://blog.oraylis.de/2013/05/using-dynamic-parameter-values-in-power-query-queries/ und https://social.technet.microsoft.com/Forums/en-US/95dd4361 -cffb-4b12-820a-85c3d041db3e/Power-Abfrage-Abfrage-mit-Parameter-from-a-Zelle? Forum = Powerquery –

+0

eine mehr: http://www.excelguru.ca/blog/2014/11/26/ building-a-parameter-table-for-power-query/ –

+0

@StephenLloyd - Ich habe versucht, Tutorials zu folgen - immer noch Probleme. Siehe meine Bearbeitung. –

Antwort

0

startp_Value und endp_Value sind Schritte in der Power-Abfrage, so dass Sie & zu verwenden hinzufügen es auf den String, wie folgt aus:

Source = Odbc.Query("dsn=postgresql", "Select * FROM employees where hiredate BETWEEN " & startp_Value & " AND " & endp_Value

diese doesn‘ Wenn Sie Ihre SQL-Abfrage bereinigen möchten, sollten Sie dies mit startp_Value und endp_Value tun (z. B. indem Sie in ein Date und dann wieder in einen Text konvertieren).

+0

Wie würde ich das gleiche für Textwerte tun. Wenn der Text Wert ich bekomme einen Fehler von "Wir können nicht anwenden Operator & auf Typen Text und Nummer" –

+0

Wenn Startp_Value und Endp_Value Zahlen sind, müssen Sie stattdessen 'Number.ToText (Startp_Value)' und 'Number.ToText (Endp_Value)' von ''startp_Value' und' endp_Value'. –