Spalte füllen lassen mit Bedinung

DanielW

Benutzer
Beiträge
11
Hallo,

Ich stehe vor einem Problem, und weiß nicht wie ich es richtig anpacken soll.

Ich habe eine Tabelle mit 5 Spalten und eine Tabelle mit 1 Spalte.
Die Tabelle mit den 5 Spalten ist bereits gefüllt.

Aber im Grunde interessieren nur 2 Spalten, Name und Type.
Type ist ein integer und kann nur 1 oder 0 sein.

Die Spalte von Tabelle Nr. 2 soll abhängig von den beiden oben genanten Spalten befüllt werden.
Wenn der Typ = 0 ist, soll in der Spalte der Name drin stehen. Ist der Typ 1, soll in der Spalte ' ' + der Name drin stehen. Also einfach noch ein Paar Leerzeichen vorher.

Insert Into Intern_Lokal.dbo.tabelle2(NameS)
Select Name,

Case When Type = '0'
Then Name
ELSE ' ' + Name
END
From dbo.contact

So bekomme ich leider folgende Fehlermeldung, verstehe aber nicht warum. Ich habe die Fehlermeldung schon gegoogelt, aber ich kann mit der Erklärung nichts anfangen.

Evtl. kann mir hier einer Weiterhelfen

Danke im Voraus
 
Werbung:
So bekomme ich leider folgende Fehlermeldung, verstehe aber nicht warum. Ich habe die Fehlermeldung schon gegoogelt, aber ich kann mit der Erklärung nichts anfangen.

Aber vielleicht andere, nur wenn Du diese geheim hälst dann halt wieder nicht. Dumm gelaufen.

Evtl. ist einfach die String-verkettung falsch. In PG wäre es || und nicht +.

Ach so, was ich auch grad sehe: Du vergleichst einen Integer mit einem String. Das ist, ähm, ungeschickt. Vielleicht ist auch das der Fehler? Oder beides? Oder was anderes? Die Antwort findest Du in der Fehlermeldung ;-)
 
+ ist kein Problem für die Verkettung von Strings in MSSQL.

Meine Glaskugel tippt auf Type = 0 statt Type = '0' da Type ja eben kein String ist also ein Vergleich mit einem String keinen Sinn macht. Mehr stünde natürlich in der Fehlermeldung.
 
hab scheinbar vergessen die Fehlermeldung einzufügen :D

"Die Auswahlliste für die INSERT-Anweisung enthält mehr Elemente als die Einfügeliste. Die Anzahl von SELECT-Werten und die Anzahl von INSERT-Spalten müssen übereinstimmen."

An der Verkettung kann dieses Problem nicht liegen, da ich auch probiert habe, nur den Namen einzufügen. Mag sein, das dies so nicht korrekt ist, aber das löst nicht diesen Fehler aus.

Dein 2. Hinweis verstehe ich leider nicht ganz. Wo vergleiche ich einen String mit einem Integer ?
 
Hat sich etwas überschnitten. Jetzt springt es mir auch ins Auge wo mein String integer vergleich ist... Wenn man stundenlang googelt und sucht, sieht man die leichtesten Dinge nicht mehr.

Hab es gerade mal geändert, aber die Fehlermeldung ist immer noch vorhanden.
 
Dir fehlt hinter der CASE-Schleife (also hinter END) auch noch ein Spaltenalias AS spalte oder so. Eventuell wird die Spalte deshalb vom INSERT nicht als solche gezählt.

PS: Sry du versuchst ja nur eine Spalte einzufügen, dein Select liefert aber zwei. Also entweder den Insert um eine Spalte ergänzen oder die beiden Spalten verketten.
 
Werbung:
Zurück
Oben