MS SQL - Frage zu Distinct / Group by

paule123

Lt. Junior Grade
Registriert
Okt. 2006
Beiträge
464
Moin,

ich versuche gerade eine Abfrage in einer Datenbank auf einem Microsoft SQL Server 2014 zu erstellen, und habe irgendwie ein Brett vorm Kopf:

Beispieltabelle:

Standort-NrArtikel-NrArtikel-Name
100111Tisch
100111Tisch
100222Stuhl
200111Tisch
200222Stuhl
200222Stuhl
300333Hocker


Ich möchte nun eine Abfrage, die mir zu jedem Standort jeden Artikel einmal ausgibt, und dazu in einer neuen Spalte die Anzahl des Artikels pro Standort angibt:


Standort-NrArtikel-NrArtikel-NameAnzahl
100111Tisch2
100222Stuhl1
200111Tisch1
200222Stuhl2
300333Hocker1

Ich habe mit Count und Group by herumprobiert, aber komme nicht weiter.

Hat vielleicht jemand mit mehr Erfahrung einen Tip für mich?
 
Keine Ahnung ob es das bei MS SQL gibt aber schau dir mal "join" an. Damit sollte das klappen.
 
Nee, n Join brauchst du an dieser Stelle nicht,

Dein Select für die oben stehende Tabelle hast du? Ganz nützlich wäre dein Query und deine Versuche die du daran unternommen hast. So etwas einfaches ist fast schon Hausaufgabe und hier nicht gern gesehen, auch wenn ich bei deiner Zugehörigkeit hier nicht davon ausgehe ;) Außerdem kann man selbst so besser daraus lernen, wenn andere sagen was man den dort eigentlich gerade probiert hat.

Versuch als erstes mal nur die Standorte zu gruppieren (Group By, so das jeder 1x nur da steht), wenn du das hast kannst du eine Aggregatfunktion für die Anzahl einbauen (Count, wie oft taucht der Eintrag mit dem Standort in der Tabelle auf) und zum Schluss noch die Produkte selbst (wie oft wurde das Produkt am Standort verkauft).
 
SQL:
select standort, artNr, artName, count(1) as anzahl from (
    select 100 as 'standort', 111 as artNr, 'Tisch' as artName
    union All select 100 as 'standort', 111 as artNr, 'Tisch' as artName
    union All select 100 as 'standort', 222 as artNr, 'Stuhl' as artName
    union All select 200 as 'standort', 111 as artNr, 'Tisch' as artName
    union All select 200 as 'standort', 222 as artNr, 'Stuhl' as artName
    union All select 200 as 'standort', 222 as artNr, 'Stuhl' as artName
    union All select 300 as 'standort', 333 as artNr, 'Hocker' as artName) x
group by standort, artNr, artName

Einfach gruppieren und zählen
 
SQL:
SELECT
     COUNT(1) AS Anzahl
    ,[standort-nr]
    ,[strikel-nr]
    ,[artikel-name]
FROM [Tabelle]
GROUP BY
     [standort-nr]
    ,[strikel-nr]
    ,[artikel-name]
.
 
@paule123

Code:
SELECT *, count(*)
  FROM Tabellenname
  group by Standort-Nr, Artikel-Nr, Artikel-Name

Funktioniert wie gewünscht.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: paule123
Wow, vielen Dank für die zahlreichen Antworten, das ging ja fix.

Ich habe es mit der Lösung von DocWindows bzw. Geisterwolf versucht, das funktioniert einwandfrei. Danke!
 

Ähnliche Themen

Zurück
Oben