Ich versuche, eine einfache SQL-Abfrage schreiben einige Preise von einem etwas älteren SQL Server zu beheben 2000. Das Problem haben wir 6 verschiedene Preise und ich würde es zu machen, so dass ich muss nur einen Hausmeister wechseln, um dies zu erledigen.unter Verwendung von SQL-Variable in where-Klausel vor gleich
erklärte ich eine Variable als Zeichen an der Spitze und versuchte, diese Zeichen nach unten in die Erklärung zu bekommen. Dies funktioniert halb, für den Teil nach dem Gleichen. Der Code hier unten funktioniert. Aber ich muss die "dbo.dep_art.VB05" ändern. Die 5 in VB05 muss der @ ID entsprechen. Wenn ich also die @ID in 4 ändere, muss VB05 VB04 sein. Ich habe versucht, [email protected] und dbo.dep_art.VB0 & @ID, aber das hat nicht funktioniert. Versuche auch eine zweite Variable als nvarchar und setze sie als dbo.dep_art.VB05, aber das ging auch schief.
Bitte denken Sie daran: Es ist ein SQL Server 2000.
Declare @ID as char
set @ID = 5
/*.................*/
select distinct(dbo.dep_prs.ARTNR),
dbo.dep_art.Bezeichnung,
dbo.dep_prs.PR_Brutto
from
dep_prs, dep_art
where
dbo.dep_prs.ARTNR = dbo.dep_art.ARTNR
and dbo.dep_prs.Preisgruppe = 1
and dbo.dep_art.VB05 = 2
and dbo.dep_prs.LIdx = @ID
or dbo.dep_prs.ARTNR = dbo.dep_art.ARTNR
and dbo.dep_prs.Preisgruppe = 1
and dbo.dep_art.VB05 = 3
and dbo.dep_prs.LIdx = @ID
order by
dbo.dep_prs.artnr
schlagen Gebrauch [Schlechte Gewohnheiten zu treten: mit altem Stil JOIN] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits- to-kick-using-old-style-joins.aspx) - Diese alte * durch Kommas getrennte Liste von Tabellen * style wurde durch die * richtige * ersetzt ANSI 'JOIN' Syntax in der ANSI - ** 92 ** SQL Standard (** mehr als 20 Jahren ** vor) und seine Verwendung ist –
auch entmutigt: Wenn Sie eine Variable als' char' * ohne * Angabe einer Länge definieren - dann bekommst du eine Variable von ** genau 1 Zeichen Länge ** - ist das was du willst/brauchst ?? Wenn nicht: Verwenden Sie 'varchar (n)', um eine String-Variable zu definieren, die bis zu 'n' Zeichen lang sein kann! Außerdem: Wenn Sie eine Variable als 'char' definieren und ihr etwas zuweisen wollen, verwenden Sie ** einfache Anführungszeichen **, um den Zeichenfolgenwert zu bezeichnen:' set @ID = '5''. Ohne die einfachen Anführungszeichen, dann ist es ein ** ** integer Wert und SQL Server wird eine Umwandlung –
Danke für die Antwort zu tun hat. Schlechte Gewohnheiten in der Tat, nur verwendet Join als Linke Join in einigen Abfragen, verwendet nie Join in dieser Art von Abfrage. Ich werde versuchen, mich zu verbessern. Was das Char betrifft, brauche ich nur ein Zeichen (1 bis 6). Auch schlechte Angewohnheiten aus der Zeit, dass 640k für alle genug waren. Und ich habe die einfachen Zitate vergessen, bemerkte ich. – Roman78