Problem mit Statement - SQL-Server

ratze79

Mitglied
Hallo zusammen,

ich stehe gerade auf dem Schlauch.
Konnte das Forum nicht durchsuchen, da ich die Fragestellung nicht umschreiben kann :mad:

Und zwar habe ich habe eine Tabelle mit einem PK aus 3 Spalten:

Artikelnr, Lieferant, Haus
12 - 79 - A
12 - 79 - B
12 - 79 - C
17 - 77 - A
17 - 77 - C
15 - 79 - B
15 - 79 - C

Ich suche eine Abfrage die mir alle Artikel und Lieferanten ausgibt in denen das Haus A nicht vorkommt. In diesem Fall nur:
15 79


Vielen Dank für eure Hilfe im voraus.

Grüße Ratze
 
Hi,

vielleicht so in der Art (ungetestet):

SQL:
SELECT Artikelnr, Lieferant, COUNT(Haus = 'A')
   FROM tabelle
   GROUP BY Artikelnr, Lieferant
   HAVING COUNT(Haus = 'A') = 0

LG
 
Moin,

vermutlich muss kuddeldaddeldus Idee syntaktisch so abgeändert werden:
SQL:
SELECT Artikelnr, Lieferant, Sum(IIf( Haus='A', 1, 0) ) AS cntA
FROM tabelle 
GROUP BY Artikelnr, Lieferant
having  Sum(IIf( Haus='A', 1, 0) ) = 0

Grüße
Biber
 
Ups, da schreibt tatsächlich mal jemand vorbildlich das DBMS gleich dazu und dann übersehe ich das... :-(

Mein Beispiel war auf MySQL gemünzt, aber Bibers Post lässt ja hoffen, dass sich das Prinzip 1:1 übernehmen lässt. ;)

LG
 
Moin kuddeldaddeldu,

da wir in diesem Thread anscheinend weitgehend unter uns bleiben, adressiere ich mal dirket an Dich.

Ich muss ein klein bisschen zurückrudern.
Ja, MS-SQL kann mit "COUNT(Haus = 'A')" nix anfangen.
Nein, die IIF()-Funktion ist aber auch nicht implementiert.
[Da war ich gedanklich bei dem, was MSAccess so scherzhaft als "Jet-SQL" bezeichnet.]

Der noch nötige Schritt, um Deine Idee auf T-SQL zu schreiben, wäre dann statt einer IIF()-Funktion ein CASE-Konstrukt.

SQL:
SELECT Artikelnr, Lieferant, 
Sum(CASE WHEN Haus='A' THEN 1 ELSE 0 END ) AS cntA
FROM tabelle 
GROUP BY Artikelnr, Lieferant
HAVING  Sum(CASE WHEN Haus='A' THEN 1 ELSE 0 END ) = 0

Sieht zwar shice aus, aber so sollten die Jungs und Mädels, die auf dem MSSQL-Server die Statements parsen damit umgehen können.

Nur der Vollständigkeit halber.

Grüße
Biber
 
Zuletzt bearbeitet von einem Moderator:
Zurück