none
SQL-Abfrage - Where-Bedingung mit 4 bit-Spalten - und Parameter dazu RRS feed

  • Frage

  • Hallo

    Ich stehe gerade bei einer Abfrage total "auf der Leitung" - und habe die Bitte, vielleicht kann mir hier jemand dazu weiterhelfen.

    Es gibt bei einem Kunden einen View, und dafür muss ich eine Statistik bauen. Dieser View beinhaltet unter anderem 4 bit-Spalten (ich nenne diese als Beispiel: Check-A, Check-B, Check-C und Check-D).

    Bei der Statistik kann unter anderem auch mit diesen 4 Spalten als Suchkriterium die Statistik gestartet und ausgewertet werden. Es kann also alles mit Check-A (=true) und Check-B (=true); aber genauso nur Check-B (=true) usw. usw. usw. ausgewertet werden.

    Wie bekomme ich die WHERE-Bedingung für diesen Statistik-SELECT am besten so hin, dass ich mit 4 Parameter jede Möglichkeit in dieser WHERE-Bedingung meiner bit-Felder abfragen kann.

    Ist es überhaupt möglich in einem SELECT / mit einer WHERE-Bedingung; oder geht dies gar nicht so einfach. Ich bin momentan beim herum-probieren in eine Sackgasse geraten...

    Vielleicht hat hier jemand einen Tipp für mich.

    Vielen Dank schon mal für Eure Bemühungen & schönen Gruß

    Michael


    Michael Erlinger

    Dienstag, 13. Januar 2015 08:54

Antworten

  • Hallo Michael,

    ich bin mir nicht sicher, ob ich Dich richtig verstanden habe, aber wenn ja, dann kannst Du prüfen, ob das Feld dem Parameterwert entspricht oder ob der Parameterwert NULL ist :

    DECLARE @para1 bit, @para2 bit, @para3 bit, @para4 bit
    
    SET @para2 = 0;
    SET @para4 = 1;
    
    SELECT *
    FROM tabelle
    WHERE ([Check-A] = @para1 OR @para1 IS NULL)
          AND ([Check-B] = @para2 OR @para2 IS NULL)
          AND ([Check-C] = @para3 OR @para3 IS NULL)
          AND ([Check-D] = @para4 OR @para4 IS NULL)


    Olaf Helper

    [ Blog] [ Xing] [ MVP]


    • Bearbeitet Olaf HelperMVP Dienstag, 13. Januar 2015 09:21
    • Als Antwort markiert M.Erlinger Dienstag, 13. Januar 2015 12:57
    Dienstag, 13. Januar 2015 09:08

Alle Antworten

  • Hallo Michael,

    ich bin mir nicht sicher, ob ich Dich richtig verstanden habe, aber wenn ja, dann kannst Du prüfen, ob das Feld dem Parameterwert entspricht oder ob der Parameterwert NULL ist :

    DECLARE @para1 bit, @para2 bit, @para3 bit, @para4 bit
    
    SET @para2 = 0;
    SET @para4 = 1;
    
    SELECT *
    FROM tabelle
    WHERE ([Check-A] = @para1 OR @para1 IS NULL)
          AND ([Check-B] = @para2 OR @para2 IS NULL)
          AND ([Check-C] = @para3 OR @para3 IS NULL)
          AND ([Check-D] = @para4 OR @para4 IS NULL)


    Olaf Helper

    [ Blog] [ Xing] [ MVP]


    • Bearbeitet Olaf HelperMVP Dienstag, 13. Januar 2015 09:21
    • Als Antwort markiert M.Erlinger Dienstag, 13. Januar 2015 12:57
    Dienstag, 13. Januar 2015 09:08
  • Hallo Olaf

    Vielen Dank für Deine rasche Rückmeldung!

    Ich werde das einmal ausprobieren - aber ich glaube das kommt so hin.

    Schönen Gruß, Michael


    Michael Erlinger

    Dienstag, 13. Januar 2015 12:57