2 Spalten Zusammenfügen

Gullien

Benutzer
Beiträge
20
Hallo Zusammen,

habe eine SQL Anweisung. Funktioniert auch super alles. Das einzige was mich stört und ich nicht lösen kann ist, dass beim Zusammenführen von 4 Spalten in 2 er mir bei leeren Spalten noch ein / einfügt.

Abbildung vor Abfrage:
Vor Abfrage.PNG

Und nach Abfrage
nach Abfrage.PNG

So nun möchte ich aber dass ich kein / habe sondern Wenn kein Jahr angegeben ist da auch nichts steht.

Hier noch mein Abfrage dazu:
SELECT Make, Model, Modellvariant, [From/Month] & '/ ' & [From/Year] AS Von, [To/Month] & '/ ' & [To/Year] AS Bis, [OE part number], [Most Recent Interchange Part], [OE Change part 1], [OE Change part 2], [Intellisens C4], [Intellisens S4], RDE, Frequency
FROM [Europa Struktur]
WHERE (NOT([Intellisens C4] IS NULL)) OR (NOT([Intellisens S4] IS NULL)) OR (NOT(RDE IS NULL));

Hoffe das ist nichts komplexes.
Vielen Dank im Voraus
 
Werbung:
In MSSQL würde man das mit einer CASE Schleife im Select Teil lösen, in etwa so:
Code:
[From/Month] & ( CASE WHEN [From/Month] IS NOT NULL AND [From/Year] IS NOT NULL THEN '/' ELSE '' END ) & [From/Year] AS Von
Eventuell musst du auf [From/Month] = '' prüfen, ich bin mir nicht sicher wie sich das mit NULL in Access verhält. Aber im Wesentlichen sollte es genauso laufen.
 
Hmm also mit der Formel so klappt das nicht bekomme da eine Fehlermeldung "Syntaxfehler".
Habs auch nur eingefügt ehrlich gesagt, da ich nicht weiss wie sonst.

SELECT Make, Model, Modellvariant, [From/Month] & ( CASE WHEN [From/Month] IS NOT NULL AND [From/Year] IS NOT NULL THEN '/' ELSE '' END ) & [From/Year] AS Von, [To/Month] & '/ ' & [To/Year] AS Bis, [OE part number], [Most Recent Interchange Part], [OE Change part 1], [OE Change part 2], [Intellisens C4], [Intellisens S4], RDE, Frequency
FROM [Europa Struktur]
WHERE (NOT([Intellisens C4] IS NULL)) OR (NOT([Intellisens S4] IS NULL)) OR (NOT(RDE IS NULL));
 
Bin aus deinem Link nicht schlau geworden. Kannst dus mir vllt bitte in mein code einbauen, wenn es für dich verständlich ist.

Ansonsten muss ich immer die / händisch rauslöschen
 
Ich hab kein Access zum testen und weiss nicht ob es auf NOT NULL vernünftig prüfen kann oder ob die Spalte in Access einfach nur als leer behandelt wird. Ich weiss auch nicht ob AND innerhalb von IIf geht, ich kann nur raten:
Code:
SELECT    Make,
        Model,
        Modellvariant,
        [From/Month] +
        IIf([From/Month] IS NOT NULL AND [From/Year] IS NOT NULL,'/','') +
        [From/Year] AS Von,
        [To/Month] +
        IIf([To/Month] IS NOT NULL AND [To/Year] IS NOT NULL,'/','') +
        [To/Year] AS Bis,
        [OE part number],
        [Most Recent Interchange Part],
        [OE Change part 1],
        [OE Change part 2],
        [Intellisens C4],
        [Intellisens S4],
        RDE,
        Frequency
FROM    [Europa Struktur]
WHERE    [Intellisens C4] IS NOT NULL
OR        [Intellisens S4] IS NOT NULL
OR        RDE IS NOT NULL;
Den Rest musst du schon selbst versuchen.
 
Super vielen vielen Dank. Hat soweit funktioniert dass er mit keine "/" reinmacht. Nur ist es jetzt so, dass er bei einem Eintrag nur von der Jahreszahlt dies gar nicht mehr anzeigt. Also nur wenn ein Monat und Jahr angegeben ist fügt er die zusammen sonst bekomme ich leere Felder.
Habe dann statt AND bei der If Anweisung OR reingemacht geht aber leider auch nicht. Bin am probieren.
Danke dir sehr für deine Hilfe!
 
Ich weiss nun woran es liegt aber kann die Formel nicht so hinbiegen. Du hast ja in deiner Formel es so definiert, dass nur ein / gesetzt wird wenn beide Felder nicht leer sind. Es gibt ja aber auch felder die nur einer Jahreszahl haben also nur die eine Spalte befüllt ist und genau diese sollen so übernommen werden ohne ein / davor zu setzen. In deiner Formel lässt er diese Feldet komplett weg, da du prüfst ob die Spalte leer ist oder nicht. und nur wenn beide befüllt sind übernimmt er die.
 
In meiner Formel wird der / nur gesetzt, wenn es sowohl Jahr als auch Monat gibt. Wenn es nur Jahr oder Monat gibt, brauchst du ja auch keinen Strich sondern eben nur Jahr oder Monat. Das Problem besteht an anderer Stelle: Ein beliebiger NULL Wert in deiner Zeichenkette läßt die ganze Kette NULL werden. Also NULL * 'asdf' = NULL und das trifft dann vermutlich auf Month oder Year zu.
Code:
SELECT    Make,
        Model,
        Modellvariant,
        IIf([From/Month] IS NOT NULL,[From/Month],'') +
        IIf([From/Month] IS NOT NULL AND [From/Year] IS NOT NULL,'/','') +
        IIf([From/Year] IS NOT NULL,[From/Year],'') AS Von,
        IIf([To/Month] IS NOT NULL,[To/Month],'') +
        IIf([To/Month] IS NOT NULL AND [To/Year] IS NOT NULL,'/','') +
        IIf([To/Year] IS NOT NULL,[To/Year],'') AS Bis,
        [OE part number],
        [Most Recent Interchange Part],
        [OE Change part 1],
        [OE Change part 2],
        [Intellisens C4],
        [Intellisens S4],
        RDE,
        Frequency
FROM    [Europa Struktur]
WHERE    [Intellisens C4] IS NOT NULL
OR        [Intellisens S4] IS NOT NULL
OR        RDE IS NOT NULL;
 
Werbung:
Ohje darauf wäre ich echt nicht gekommen.
Und bin super glücklich. Es klappt.
Danke dir nochmals so sehr. Hast durch deine Unterstüzung eine Menge an Aufwand für mich gelöst.:)
 
Zurück
Oben