hyperion Geschrieben 24. Juni 2010 Teilen Geschrieben 24. Juni 2010 Hallo, leider habe ich momentan Schwierigkeiten einen Query zu schreiben. Ich habe folgende Tabelle Tab1 ID Gebiet Marke Status 1 Nord A verkauft 2 Süd B verkauft 3 Nord B verkauft 4 Nord A offen 5 Süd B offen Nun will ich einen Query derm ir das Ergbenis liefert: Gebiet Marke Verkauft Offen Nord A 1 1 Nord B 1 0 Süd B 1 0 Ich hab shcon 1000 Query probiert und nie hat es funktioniert. select gebiet, marke, count(status) as AnzahlVerkauft from tab1 where status = 'verkauft' group by gebiet, marke, Diese Version funktioniert, allerdings nur für einen Status. In diesem Fall 'verkauft'. Wie ich jetzt noch die Spalte AnzahlOffen und andere hinzubekomme weiß ich nicht. Steh ich auf dem Schlauch oder ist die Aufgabe schwer? Gruß hyperion Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. Juni 2010 Teilen Geschrieben 24. Juni 2010 Da Du das DBMS nicht nennst, kann man hier nicht gezielt eine Query angeben. Mache es mit Subselects oder einer Pivottabelle (Pivot Tabellen (Teil 1 - Einführung)) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hyperion Geschrieben 24. Juni 2010 Autor Teilen Geschrieben 24. Juni 2010 Es handelt sich um MSAccess. Mit dem Pivottabellenassisten habe ich es bereits probiert und bin leider gescheitert. Ein manueller AUfbau ist auch nciht möglich, da MSAccess kein Case unterstützt. Mit Subselects habe ich es auch versucht. Leider bekomme ich hier bei ANzahlVerkauft die richtigen Werte und bei AnzahlOffen die selben Werte wie bei AnzahlVerkauft -> falsch SELECT ssev.Gebiet, ssev.Marke, ssev.Niederlassung, Count(ssev.Status) AS AnzahlVerkauft, count(sso.status) as AnzahlOffen FROM (SELECT Projekte.Gebiet, Produkte.Marke, Vertriebspartner.Niederlassung, Projekte.Status AS Status FROM Vertriebspartner INNER JOIN (Produkte INNER JOIN Projekte ON Produkte.ModellID=Projekte.ModellID) ON Vertriebspartner.VertriebspartnerID=Projekte.VertriebspartnerID WHERE projekte.status = 'endverkauft' ) AS ssev, (SELECT Projekte.Gebiet, Produkte.Marke, Vertriebspartner.Niederlassung, Projekte.Status AS Status FROM Vertriebspartner INNER JOIN (Produkte INNER JOIN Projekte ON Produkte.ModellID=Projekte.ModellID) ON Vertriebspartner.VertriebspartnerID=Projekte.VertriebspartnerID WHERE projekte.status = 'offen' ) AS sso GROUP BY ssev.Gebiet, ssev.Marke, ssev.Niederlassung; Gruß hyperion Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 24. Juni 2010 Teilen Geschrieben 24. Juni 2010 Nah, das is so einfach, da braucht man keine Subselects oder Pivot SELECT gebiet, marke, SUM(CASE WHEN verkauft = 'verkauft' THEN 1 ELSE 0 END) [verkauft], SUM(CASE WHEN verkauft ='offen' THEN 1 ELSE 0 END) [offen] FROM tabelle GROUP BY gebiet, marke Das wichtige dran is das Prinzip. Was den Access Dialekt angeht : iif(verkauft='verkauft',1,0), iif(verkauft='offen',1,0) Gruß Sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. Juni 2010 Teilen Geschrieben 24. Juni 2010 Ich habe leider keine MS Systeme, somit kann ich es nicht testen. Ich denke das mit dem Pivot sollte schon das richtige sein. Baue doch das Statement erst für einen Wert auf, dann für den zweiten usw. Im Moment verstehe ich nicht, warum Du Joins brauchst, denn in Deinem ersten Post hattest Du die nicht erwähnt. Wenn Du die Joins brauchst, dann mache doch daraus einen View, den Du dann in Deiner Pivot Tabelle verwendest. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hyperion Geschrieben 24. Juni 2010 Autor Teilen Geschrieben 24. Juni 2010 Hallo, ich habe es jetzt doch noch mit dem Pivotassistenten geschafft. Die Joins habe ich am Anfang nicht erwähnt, weil ich das erste Beispiel noch auf das wesentliche beschränken wollte. Und Danke für den TIpp mit dem iff, das kann ich bestimtm noch irgendwann brauchen. Gruß hyperion Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 25. Juni 2010 Teilen Geschrieben 25. Juni 2010 Ehrlich gesagt, ich würd von den Wizards abraten, irgendwie tuts vielleicht, aber a) lernt ma nix bei, und das is in unserem Job immer wichtig, und trau ich den dingern nich Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.