Announcement

Collapse
No announcement yet.

CASE oder BETWEEN oder ?

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

  • CASE oder BETWEEN oder ?

    Hallo zusammen

    Ich möchte meinen Artikelstamm nach Warengruppen WABE selektieren:

    Code:
    Select arnr, arbe, wabe
    from t051art
    where arnr like 'TEST%'
    and 
    wenn _wabe = ' '  dann alle
    wenn _wabe != ' ' dann nur Artikel der eingegebenen Warengruppe
    Also wenn ich beim Paramter _wabe nichts eingebe,sollen alle Artikel kommen.
    Wenn ich bei _wabe eine Gruppe eingebe, soll nur die Gruppe kommen.

    Wie kann ich das umsetzen?

    Vielen Dank für eure Hilfe.
    Thomas

  • #2
    Das geht mit einem boolean statement:

    [highlight=sql]
    SELECT *
    FROM t051art
    WHERE
    (_wabe != ' ' AND wabe = _wabe)
    [/highlight]

    Gibst Du für _wabe nichts ein wird das statement einfach ignoriert, sprich Du hast alle. Gibst Du _wabe ein wird dadurch wabe = _wabe aktiviert.

    Comment


    • #3
      ... dürfte so nicht funktionieren, ist ja eine UND-Verknüpfung und wenn _wabe gleich ' ' ist, dann ist der erste Teil falsch und daher liefert die WHERE-Bedingung immer falsch.
      Korrekt wäre in meinen Augen (nehme jetzt mal den SQL-Server her):
      ... WHERE (ISNULL(_wabe, '') = '' OR wabe = _wabe)

      bye,
      Helmut

      Comment


      • #4
        Da hast Du recht Dann vielleicht so:

        [highlight=sql]
        SELECT *
        FROM t051art
        WHERE
        (_wabe != ' ' AND wabe = _wabe) OR (_wabe = ' ')
        [/highlight]

        Edit: Oh... Du hattest ja praktisch dasselbe schon dastehen... zu spät gesehen. Sorry

        Comment

        Working...
        X