Jump to content

Filtern in gespeicherter Prozedur - SQL


Empfohlene Beiträge

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
*/

 

Link zu diesem Kommentar

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 von NilsK
Link zu diesem Kommentar

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]; 
Link zu diesem Kommentar

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...