Jump to content
PeterWa

Leeres Ergebnis - Datensatz ohne Inhalt

Recommended Posts

Hallo und guten Morgen

 

Bevor ich mein Problem erkläre möchte ich festhalten das dies meine ersten Schritte in SQL Server sind.

Nun zur meiner Frage:: Wie behandelt man einen leeren Datensatz, Um es genauer zu sagen Wenn bei nachstehnder Abfrage kein Ergebniss vorhanden ist.

wenn also bei nachstehender abfrage kein Wert vorhanden ist.

 

Set @Kunde = (Select 
Kundenrabatt
FROM dbo.tblKundenRabatt
WheRE Rabattgruppe = @Rabattgruppe
And Kundenadresse=@Adresse)

 

Meine Versuche mit @Kunde is null oder @kunde = 0
Brachten mich leider nicht weiter,

 

Besten dank für einen tipp im voraus!

 

mfg

Peter

 

Share this post


Link to post
Share on other sites

Hallo!

Mein Ziel:

Es gibt in dieser Procedur 2 Abfragen die eine oben und eine die nur den Allgemeinen  Rabatt  beinhaltet. Wenn also die 1. Abfrage leer ist, dann wird die 2. Abfrage aktiv.

Der Aufruf der Prc :

@Rabattgruppe  

@Adresse 

@Rabatt steht für den Rückgabewert der Proc.

 

Die Variableen

@Kunde  steht für die 1. Abfrage

@Special steht für die 2. Abfrage

 

Es sollte ungefähr so wie unten beschreiben klappen 

Ich stelle mir das zumindest so vor (vielleicht ein bischen Blauäugig?)

 

if @Kunde = null

SET @Rabatt = @Spcial  -- Name der 2. Abfrage

else

SET @Rabatt =@Kunde

 

mfg

Peter

 

Share this post


Link to post
Share on other sites

Hallo Peter,

 

packst Du bitte die SQL Anweisungen als Code in den Editor?

Einfach den Button </> nutzen, das erhöht die Lesbarkeit ungemein,

 

Danke für die Beachtung

Share this post


Link to post
Share on other sites

 

Kannst du auch mal Beispiele der Daten liefern? Ein paar (anonyme) Werte für alle relevanten Tabellen sollten reichen.

Share this post


Link to post
Share on other sites

Hallo!

Ich sende die komplette Procedur.

Nochmals die Function:

Wenn Adresse und Rabattgruppe in @Kunden vorhanden, dann soll der Rabatt von @Kunde genommen werden. 

zB: '0007',3 Diese sind vorhanden und werden auch Übernommen

Wenn aber statt der 3 eine 4, Dieser Kunde ist in der tblKundenrabatt nicht vorhanden. Er bekommt den @Special Rabatt

Wenn ich die Proc ausführe und mit

Print @Kunde und

Print @Special konntroliere und @Kunde ist False ist das auch leer. 

Ich habe mich mit einer Unterabfrage abgemüht, wenn @Kunde ohne Ergebniss ist, eine 0 angezeigt wird, da bin ich aber an der Erstellung gescheitert

 

Ich hoffe das ich jetzt alles richtig erklärt habe.

 

mfg

Peter

ALTER Procedure [dbo].[spRabatt]
@Rabattgruppe varchar(25),
@Adresse Int,
@Rabatt real Output
AS

Declare @Special as real
Declare @Kunde as real

Begin
SET @Special = (SELECT Spezial
FROM dbo.tblRabattgruppe
WHERE Rabattgruppe =  @Rabattgruppe);

Set @Kunde = (Select 
Kundenrabatt
FROM dbo.tblKundenRabatt
WHERE Rabattgruppe = @Rabattgruppe
And Kundenadresse = @Adresse);
SET @Rabatt = @Kunde
End

 

Share this post


Link to post
Share on other sites

Evtl. hilft ein If ELSE im Statement weiter: https://docs.microsoft.com/de-de/sql/t-sql/language-elements/if-else-transact-sql?view=sql-server-2017

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/c72397d1-e5aa-4d56-8793-9e363738f888/if-else-in-stored-procedure?forum=transactsql

 

BTW: Die Deklaration der Variablen und die Benennung der Feldnamen sind IMO etwas unglücklich.  Bei  @Adresse gehe ich nicht von einer ID (int) aus, ebenfalls bei Kundenadresse.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Werbepartner:



×
×
  • Create New...