MS SQL: Anzeigen/Ausblenden doppelter Werte für einen Identifier

stefko93

Cadet 1st Year
Registriert
März 2018
Beiträge
10
Hallo zusammen,

und zwar habe ich eine Tabelle die folgendermaßen aussieht:

ProductIDModellNrFarbeSichtbarkeit
2122:blueVisible
3122:blueVisible
4154:redInvisible(sale)
5154:redInvisible(DC)
6154:redVisible
7154:redVisible
8347:blackInvisible
9347:blackInvisible
10347:blackInvisible
11 587:yellowVisible
12587:yellowInvisible(sale)
Diese Liste habe ich über folgende Abfrage generiert:

SELECT [ProductID]
,[ModellNrFarbe]
,[Sichtbarkeit]
FROM XYZ.BLA.BLUB
WHERE (ProductID is not null) and ((Sichtbarkeit like 'Visible') or (Sichtbarkeit like 'Invisible') or (Sichtbarkeit like 'Invisible(sale)' or (Sichtbarkeit like 'Invisible(DC))


Nun werden mir alle Produkte inklusive ihrer Sichtbarkeit angezeigt. Angezeigt werden sollen allerdings nur die Produkte die bei einer gleichen ModellNrFarbe unterschiedliche Werte bei Sichtbarkeit haben. Im obigen Beispiel sollen also 122:blue und 347:black nicht in der Tabelle angezeigt werden. Ebenso wäre es gut wenn im Falle von unterschiedlicher Sichtbarkeit bei einer ModellNrFarbe, gleiche ausgeblendet werden. Im obigen Beispiel also das Produkt mit der ProductID 7.

Das Ergebnis sollte so aussehen:
ProductIDModellNrFarbeSichtbarkeit
4154:redInvisible(sale)
5154:redInvisible(DC)
6154:redVisible
11587:yellowVisible
12587:yellowInvisible(sale)


Ich habe bereits mehrere Foren durchsucht und Tutorials gelesen, habe aber leider keine Befehle für mein Anliegen gefunden.

Hilfe ist sehr willkommen!

Liebe Grüße
stefko93
 
Kann das jetzt nicht ausprobieren (also ohne Gewähr), aber versuche mal etwas wie:

select distinct b1.ProductID, b1.ModellNrFarbe, b1.Sichtbarkeit
from blub b1
inner join blub b2 on b1.ModellNrFarbe = b2.ModellNrFarbe and b1.Sichtbarkeit <> b2.Sichtbarkeit
 
Erstmal das Schema normalisieren. So ein kleines bißchen.
Vor dem Hintergrund mal recherchieren, wofür Atomicity steht.
 
Vielen Dank Tolotos, habe eine andere Lösung gefunden.
RalphS, deine Antwort war weniger Hilfreich, aber danke trotzdem für den Beitrag :-)
 
Zurück
Oben