2016-07-27 10 views
0

Ich habe eine Tabelle mit folgenden Spalten:SQL in Strom Abfrage ODBC

Account_No, Start_Date, End_Date 

ich diese Tabelle in Kraft Abfrage der Verwendung eines SQL Select-Befehl durch ODBC.

Jetzt möchte ich Summe und Anzahl der Transaktionen aller Konten in der obigen Tabelle von Start_Date zu End_Date von einer anderen Tabelle erhalten. z.B. Transaction_Table. Was soll ich tun, um meine gewünschten Ergebnisse zu erzielen?

Grüße

KAM

Antwort

0

Sie könnten eine GROUP BY Anweisung in der SQL verwenden Sie schrieb, oder Sie können die Tabelle auf der Grundlage der Start_Date, um die End_Date und dann mit der rechten Maustaste auf die Spalte, die Sie filtern möchte zählen und wählen Group By.

+0

Lieber Alejandro, ich benutze diesen Befehl, um erste Tabelle zu bekommen. Select Account_No, Start_Date, End_Date from Customer_Table where Branch_ID = '4420'. Bitte sagen Sie mir, wie kann ich Gruppieren nach Befehl verwenden, um Daten von einer anderen Tabelle zu erhalten. – KhawarAmeerMalik

1

Sie benötigen wahrscheinlich zu diesem Zeitpunkt überhaupt keine Power Query. Ihr DB-Server Unter der Annahme, MS SQL Server 2008 oder höher,

WITH t1([Account_No], StartDate, EndDate) As 
(
    SELECT [Account_No], StartDate = MIN([Start_Date]), EndDate = MAX([End_Date]) 
    FROM Table1 
    GROUP BY Account_No 
) 
SELECT 
     [Account_No] 
    , Amount = SUM([Field_Transaction_Total]) 
    , [Transaction_Count] = COUNT([Field_Transaction_ID]) 
FROM [Transaction_Table] t2 
INNER JOIN t1 ON t2.[Account_No] = t1.Account_No 
    AND t2.[Field_Transaction_Date] BETWEEN t1.StartDate AND t1.EndDate 

Sie auch eine Kopie einer Abfrage nach innen mit Block mit Konten und Daten in Excel diese Tabelle erhalten können, wenn Sie es brauchen.

Wenn Sie einen anderen SQL Server verwenden, Refactor nur diesen Code, ich hoffe, Sie haben die Idee.

+0

Sehr geehrter Herr Eugene, Vielen Dank für Ihre Antwort, aber ich bekomme folgenden Fehler. "Details:" ODBC: FEHLER [42000] [Teradata] [ODBC-Teradata-Treiber] [Teradata-Datenbank] Syntaxfehler, erwartete etwas wie ein Name oder eine Unicode-getrennte Kennung zwischen dem Wort 'Amount' und '='. "Während Sie den Code ausführen. Können Sie mir bitte sagen, was ich hier falsch mache. – KhawarAmeerMalik

+0

mein Code ist wie folgt With t1(Account_Num, Account_Status_End_Dt) as ( Select Account_Num, Acct_Status_Type_Cd, Acct_Status_Reason_Cd, Acct_Status_End_Dt from dp_view_t24_ibg.Account_Status_hist where Account_Num in (Select Account_Num from dp_tab.agreement where branch_party_id = '5520') ) Select \t Account_Num \t , Amount = Sum(Event_Amt) \t , Transaction_Count = Count(Event_Amt) From Dp_view_T24_ibg.event t2 Inner Join t1 ON t2.Account_Num = t1.Account_Num \t AND t2.Event_Start_Dt Between t1.Account_Status_End_Dt AND '2016-06-30' KhawarAmeerMalik

+0

Wie ich sehe, verwenden Sie Teradata. Obwohl ich keine Erfahrung mit diesem RDBMS habe, kann ich Ihnen allgemeine Fehlersuche Pfad anbieten . – Eugene

0

Ich würde eine neue Abfrage basierend auf Ihrer Transaction_Table starten. Dann würde ich einen Merge-Schritt hinzufügen, der sich Ihrer ersten Abfrage unter Account_No anschließt. Dann würde ich die Start_Date und End_Date von der generierten NewColumn erweitern.

Als nächstes würde ich eine benutzerdefinierte Spalte, hinzufügen und eine Formel wie folgt schreiben:

= [Transaction_Date] >= [Start_Date] and [Transaction_Date] <= [End_Date]

Die resultierende Spalte wird WAHR oder FALSCH zeigen. Nach WAHR filtern.

Schließlich würde ich einen Gruppe von Schritt zu Summe und zählen wie erforderlich hinzufügen.

Ich hoffe, ich habe Ihre Anforderung richtig verstanden - es war nicht wirklich klar aus Ihrer Frage.