2016-04-10 7 views
1

Ich präsentiere eine Zusammenfassung der Transaktionen nach Kunden/Kontonummer. Transaktionen haben zwei mögliche Komponenten, Hardware oder Software. Ich möchte, dass der Benutzer entweder eine Präsentation erhält, die die Gesamtsumme für das Konto enthält, oder Hardware- und Softwaresummen, die separat dargestellt werden.Mit If-Anweisung in On-Anweisung

Die einzige Option, die dem Benutzer zur Verfügung gestellt wird, ist, sie separat zu erhalten. Um dies zu erreichen Ich habe eine Unterabfrage mit einem Join dessen auf Äußerung liest

on tb3.account_nbr=tb4.account_nbr and tb3.trans_type=tb4.trans_type 

Die Beseitigung der TRANS_TYPE Auswertung der die Anweisung gibt den Gesamtwert für alle Transaktionen auf einem Konto.

Ich habe ein Kontrollkästchen auf dem Formular hinzugefügt, das angibt, dass sie entweder die Summe oder die beiden Komponenten getrennt abrufen möchten. Der resultierende Wert der Variablen (@get_trans) ist entweder "1" für die Anzeige als separate Summen nach Vorgangsart oder "0" für die Summierung aller Vorgangsarten und die Anzeige als einzelne Summe.

Es wäre sinnvoll, die ich für die Lösung der oben auf einer if-Anweisung ändern könnte, aber es funktioniert nicht

on tb3.account_nbr=tb4.account_nbr and if(@get_trans=1,tb3.trans_type=tb4.trans_type,"") 

Jede Hilfe würde geschätzt. Danke, Jim

Antwort

0

Das Problem ist wahrscheinlich die else Klausel. Die leere Zeichenfolge wird in diesem Zusammenhang auf 0 ausgewertet - und als falsch behandelt. Das bewirkt, dass die gesamte on Bedingung falsch ist.

Sie können jedoch die Logik ohne die if schreiben:

on tb3.account_nbr = tb4.account_nbr and 
    (@get_trans <> 1 or tb3.trans_type = tb4.trans_type) 

Hinweis: Diese Version geht davon aus, dass @get_trans nicht auf einem NULL Wert nimmt. Das ist leicht zu handhaben:

on tb3.account_nbr = tb4.account_nbr and 
    (@get_trans <> 1 or @get_trans is null or tb3.trans_type = tb4.trans_type) 
+0

Ahhh, ausgezeichneter Punkt. Deine Lösung ist eleganter und ich hätte nie gedacht, aber von diesem Punkt an weiter. Danke vielmals. – JCG61