Announcement

Collapse
No announcement yet.

Wenn-Abfrage aus Access in SQL übernehmen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wenn-Abfrage aus Access in SQL übernehmen

    Hallo,

    bin langsam am verzweifeln, dabei gehe ich davon aus, dass das Problem wirklich nur klein ist, abe r da ich derzeit "nur" Neuling bei MS SQL bin, steigt der Verzweiflungspegel.

    Das Problem:

    In einer Access Abfrage generiere ich mit folgendem Syntax eine Abfragespalte:

    SYSMC: Wenn(lkz="GB";mc&"-"&ort;mc&"-"&plz)

    Hierauf prüft die Abfrage ist der Kunde in Großbritannien oder in Europa. Ergebnis ist dann, das alle englischen Kunden als Matchcode den Ort erhalten, alle europäischen Kunden die PLZ.

    Unter Access läuft das ganze problemlos.

    Nun muß ich aber die Gesamten Daten auf einen SQL Server von Microsoft portieren, hierbei wird jede Abfrage mit WENN fallen gelassen vom Assistent und nirgends mehr zu sehen.

    Daher hab ich dann in den Sichten versucht neu anzulegen und die Spalte einzufügen. Ergebnis bis dahin negativ.

    Access wandelt den Syntax im SQL-Statement in eine IIf-Syntax um, funzt aber am SQL Server nicht. Gemäß Online-Dokumentation und Beschreibung wäre es eine CASE-Funktion nur wie geb ich Die ein, es kommen ständig Fehlermeldungen.

    Mein bisheriger Versuch lautet so:

    letzte Spalte der Sicht wird in Spaltenname eingetragen:

    CASE lkz WHEN 'GB' THEN mc+ort ELSE mc+plz

    ALIAS wird auf SYSMC gesetzt.

    Nun sagt er mir erstmal, das visuell das ganze nicht darstellbar ist. Soweit so gut, aber dann meckert er beim Speichern oder Anzeigen der Ergebnisse, das der Syntax entweder bei CASE oder FROM, manchmal auch bei THEN oder ELSE inkorrekt ist.

    Wo liegt mein Fehler? Wenn mir jemand helfen könnte wäre ich sehr froh.

    Gruß

    Oliver

  • #2
    Hallo,

    das folgende SQL-Script für den Query Analyzer vom MS SQL Server demonstriert das Prinzip der CASE-Auswertung:
    <pre>
    USE tempdb
    <b>GO</b>
    <br>
    <b>CREATE</b> <b>TABLE</b> CaseDemo
    (
    recid <b>INTEGER</b> <b>NOT</b> <b>NULL</b> <b>IDENTITY</b> <b>PRIMARY</b> <b>KEY</b>,
    lkz <b>VARCHAR</b>(2) <b>NOT</b> <b>NULL</b>,
    mc <b>VARCHAR</b>(9) <b>NOT</b> <b>NULL</b>,
    ort <b>VARCHAR</b>(9) <b>NOT</b> <b>NULL</b>,
    plz <b>CHAR</b>(5) <b>NOT</b> <b>NULL</b>
    )
    <b>GO</b>
    <b>INSERT</b> <b>INTO</b> CaseDemo (lkz,mc,ort,plz) <b>VALUES</b> (<font color="#9933CC">'DE'</font>,<font color="#9933CC">'MC: DE'</font>, <font color="#9933CC">'Berlin'</font>,<font color="#9933CC">'10001'</font>)
    <b>INSERT</b> <b>INTO</b> CaseDemo (lkz,mc,ort,plz) <b>VALUES</b> (<font color="#9933CC">'GB'</font>,<font color="#9933CC">'MC: GB'</font>, <font color="#9933CC">'London'</font>,<font color="#9933CC">'-----'</font>)
    <b>GO</b>
    <br>
    <b>SELECT</b>
    <b>CASE</b> lkz
    <b>WHEN</b> <font color="#9933CC">'GB'</font> <b>THEN</b> mc + <font color="#9933CC">' - '</font> + ort
    <b>ELSE</b> mc + <font color="#9933CC">' - '</font> + plz
    <b>END</b> <b>AS</b> <font color="#9933CC">'Spaltenbeschriftung'</font>
    <b>FROM</b>
    CaseDemo
    </pre>
    Als Ergebnis der SELECT-Abfrage erhält man das folgende Ergebnis:
    <pre>
    Spaltenbeschriftung
    ---------------------
    MC: DE - 10001
    MC: GB - London
    <br>
    (2 row(s) affected)
    </pre&gt

    Comment

    Working...
    X