PeterWa 0 Geschrieben Montag um 12:56 Melden Teilen Geschrieben Montag um 12:56 Hallo! Ich möchte einmal sagen das ich in SQL- Server nicht unbedingt "Sattelfest " bin. Mein Problem: Die mitgesendete Procedur funktioniert . Was nicht funktioniert ist, wenn ich den Rechnungsbetrag einbinde. Ich komme da nicht ganz klar. Entweder ist "End" oder "Between" rot unterlegt. Eine Zusatzfrage hätte ich noch: Wenn ich Rechnungsnummer filtere. Wenn ich eine Zahl mitschicke wird diese Zahl angezeigt. Wenn ich ALLE Rechnungen angezeigt haben möchte, gibt es nur "meine variante"? Für einen Tipp währe ich dankbar. Besten Dank im Voraus! Peter --EXEC [dbo].[spRechnungSuchen] '%','%',0,'19000101','20290918',0,99999 ALTER PROCEDURE [dbo].[spRechnungSuchen] @Patient varchar(50), @Adresse varchar(50), @RGNummer int, @RgDatumvon date, @rgDatumBis date, @Betragvon float, @BetragBis float AS SET NOCOUNT ON; DECLARE @RgNrVon int, @RgNrbis int if(@RGNummer = 0) set @RgNrVon = 0 else set @RgNrVon = @RGNummer if(@RGNummer = 0) set @RgNrbis = 99999 else set @RgNrbis = @RGNummer SELECT RgNummer, Format(RgDatum,'d','de-de')DatumRg, FamName +' '+ Vorname as Patient, Strasse +' '+ Wonort as Adresse, CASE Rgtyp WHEN 1 THEN 'Rechnung' WHEN 2 THEN 'Sammelrechnung' WHEN 3 THEN 'Gutschein' End as RechnungTyp, CASE Rgtyp WHEN 1 THEN isnull(sum(([menge]*[RgBetrag])*((100+tblRechnungDeteil.MwSt)/100)),'') WHEN 2 THEN isnull(sum([tblBehandlungDeteil].[Behandbetrag]*((100+[tblBehandlungDeteil].[Mwst])/100)),'') WHEN 3 THEN isnull(Sum([GutBetrag]*((100+[tblGutschein].[Mwst])/100)),'') ELSE 0 END As SummeRechnung FROM ((((tblRechnung LEFT JOIN tblPatientAdressen ON tblRechnung.PatientNr = tblPatientAdressen.PatientNr) LEFT JOIN tblRechnungDeteil ON tblRechnung.RgNummer = tblRechnungDeteil.RechnungNr) LEFT JOIN tblBehandlung ON tblRechnung.RgNummer = tblBehandlung.RechnungNr) LEFT JOIN tblBehandlungDeteil ON tblBehandlung.BehandlungNr = tblBehandlungDeteil.BehandlungNr LEFT JOIN tblGutschein ON tblRechnung.RgNummer = tblGutschein.RechnungNr) GROUP BY RgNummer, RgDatum, FamName +' '+ Vorname, Strasse +' '+ Wonort,Rgtyp HaVING isnull(FamName +' '+ Vorname,'') LIKE '%'+ @Patient +'%' And isnull(Strasse +' '+ Wonort,'') LIKE '%'+ @Adresse +'%' AND isnull(RGNummer,'') Between @RgNrVon AND @RgNrbis AND isnull(RgDatum,'') Between @RgDatumvon and @RgDatumbis ORDER BY [FamName] +' ' + [VorName]; /* (CASE Rgtyp WHEN 1 THEN sum(([menge]*[RgBetrag])*((100+tblRechnungDeteil.MwSt)/100)) WHEN 2 THEN sum([tblBehandlungDeteil].[Behandbetrag]*((100+[tblBehandlungDeteil].[Mwst])/100)) WHEN 3 THEN Sum([GutBetrag]*((100+[tblGutschein].[Mwst])/100) ELSE 0 END) Between @Betragvon AND @BetragBis */ Zitieren Link zu diesem Kommentar
NilsK 2.971 Geschrieben Montag um 16:27 Melden Teilen Geschrieben Montag um 16:27 (bearbeitet) Moin, naja, deine Ergänzung wäre halt syntaktisch falsch. "BETWEEN" ist Teil eines Filterkriteriums und an der Stelle, an der du es laut Kommentar vermutlich einfügen willst, nicht erwartet. Du kannst das in einer WHERE- oder einer HAVING-Klausel verwenden, aber das ist in deinem Code ja nicht der Fall. Du bist da ja anscheinend noch im SELECT. Es ist auch nicht ganz einfach, dem zu folgen, was du vorhast. Vielleicht nimmst du dir noch mal etwas Zeit, zu beschreiben, was du erreichen willst. Gruß, Nils bearbeitet Montag um 16:27 von NilsK Zitieren Link zu diesem Kommentar
PeterWa 0 Geschrieben vor 14 Stunden Autor Melden Teilen Geschrieben vor 14 Stunden Hallo NIls! Was will ich erreichen: Diese Proc. ist Hintergrund für ein Suchformular. Und CASE Rgtyp .... sollte dann nach RgDatum eingefügt werden. Man hat dann die Möglichkeit nach allen Argumenten zu suchen. Rechnungsnummer, Rechnungsdatum, Namen Wohnort. Rechnungsbetrag zwischen xx und yy. und da gibt es eben das Problem. mfg Peter ....... HaVING isnull(FamName +' '+ Vorname,'') LIKE '%'+ @Patient +'%' And isnull(Strasse +' '+ Wonort,'') LIKE '%'+ @Adresse +'%' AND isnull(RGNummer,'') Between @RgNrVon AND @RgNrbis AND isnull(RgDatum,'') Between @RgDatumvon and @RgDatumbis (CASE Rgtyp WHEN 1 THEN sum(([menge]*[RgBetrag])*((100+tblRechnungDeteil.MwSt)/100)) WHEN 2 THEN sum([tblBehandlungDeteil].[Behandbetrag]*((100+[tblBehandlungDeteil].[Mwst])/100)) WHEN 3 THEN Sum([GutBetrag]*((100+[tblGutschein].[Mwst])/100) ELSE 0 END) Between @Betragvon AND @BetragBis ORDER BY [FamName] +' ' + [VorName]; Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.