PeterWa 0 Geschrieben 20. Januar Melden Geschrieben 20. Januar 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
NilsK 2.982 Geschrieben 20. Januar Melden Geschrieben 20. Januar (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 20. Januar von NilsK Zitieren
PeterWa 0 Geschrieben 21. Januar Autor Melden Geschrieben 21. Januar 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
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.