Abfrage gesucht, die den Anzahl eines Attributes prüft

isowit

Mitglied
Ich habe eine Tabelle in der steht, wieviel Geld Artikel in verschiedenen Jahren gekostet haben.

Ich suche eine Abfrage, die mir alle Artikel liefert, für die in mehr als einem Jahr Kosten aufgelaufen sind und gleichzeitig diese Kosten zusammenrechnet.

Die Tabelle sieht so aus wie im Anhang. Könnt Ihr mir helfen? Danke im Voraus!
 

Anhänge

  • 24805attachment.gif
    24805attachment.gif
    4,8 KB · Aufrufe: 19
Probier mal Folgendes:
Code:
SELECT
        COUNT(DISTINCT `jahr`),
        `artikel_id`
  FROM
        `tabelle`
  WHERE
        COUNT(DISTINCT `jahr`) > 1
Ich weiß nicht, ob es diese Funktionen/Schlüsselwörter auch bei Excel gibt – oder arbeitest du nicht mit Excel?
 
sorry, hab ich vergessen zu erwaehnen. arbeite mit sql server 2005 ee.

funktioniert leider nicht. bekomme folgende fehlermeldung:
In der WHERE-Klausel darf kein Aggregat auftreten, es sei denn, es befindet sich in einer Unterabfrage, die in einer HAVING-Klausel oder einer Auswahlliste enthalten ist, und die Spalte, die aggregiert wird, ist ein äußerer Verweis.
 
Wie die Fehlermeldung schon sagt, du brauchst eine Having- Clause
Probiers mal so, habe es selber nicht getestet

Code:
SELECT
          COUNT(DISTINCT jahr)  jahr_count
        ,artikel_id
  FROM
        tabelle
  WHERE
        group by artikel_id
HAVING 
  jahr_count >1
 
Kleine Verbesserung zu z-coupes Vorschlag:
Code:
SELECT
        COUNT(DISTINCT `jahr`) AS `jahr_count`,
        `artikel_id`
  FROM
        `tabelle`
  GROUP BY
        `artikel_id`
  HAVING
        `jahr_count` > 1
 
Danke, hatte das Where ohne Bedingung noch vor dem Group by stehen.

Hochkommas und AS sind nicht zwingend. Und schöner eingerückt als ich hast du es auch noch.
 
noch nicht ganz :(

Code:
SELECT	 COUNT(DISTINCT jahr) AS anz,
		 artikel_id
FROM	 t_kosten
WHERE	 anz > 1
GROUP BY artikel_id
führt zu Ungültiger Spaltenname 'anz'.



Code:
SELECT	 COUNT(DISTINCT jahr) AS anz,
		 artikel_id
FROM	 t_kosten
HAVING	 COUNT(DISTINCT jahr) > 1
führt zu Die 't_kosten.artikel_id'-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist.



Code:
SELECT COUNT(DISTINCT jahr)  jahr_count, artikel_id
FROM t_kosten
WHERE group by artikel_id HAVING jahr_count >1
funktioniert gar nicht. Falsche Syntax in der Nähe des 'group'-Schlüsselwortes.

Code:
SELECT	 COUNT(DISTINCT jahr) AS anz,
		 artikel_id
FROM	 t_kosten
GROUP BY artikel_id
funktioniert soweit :) nur liefert mir das eben die anzahl für alle und nicht nur > 2
 
Warum kopierst du nicht einfach das was Gumbo gepostet hat?
diesen Select habe ich in deiner Fahlerliste nicht gesehen. In meinem Select war ein Where zuviel enthalten, hatte ich aber im späteren Post geschrieben.

Gumbo hat gesagt.:
Kleine Verbesserung zu z-coupes Vorschlag:
Code:
SELECT
        COUNT(DISTINCT `jahr`) AS `jahr_count`,
        `artikel_id`
  FROM
        `tabelle`
  GROUP BY
        `artikel_id`
  HAVING
        `jahr_count` > 1
 
auch den vorschlag von Gumbo hab ich natürlich versucht. ich habe es nicht kopiert da es den gleichen fehler wie bei meiner ersten kopie ausgibt.
Code:
SELECT	 COUNT(DISTINCT "jahr") AS "jahr_count",
         "artikel_id"
FROM	 "t_kosten"
GROUP BY "artikel_id"
HAVING	 "jahr_count" > 1
Msg 207, Level 16, State 1, Line 5
Ungültiger Spaltenname 'jahr_count'.


anscheinend kann nicht auf jahr_count zugegriffen werden, obwohl es im select defineirt wurde. warum .. keine ahnung :confused:
 
Dann noch ein Versuch:
Code:
SELECT
        COUNT(DISTINCT `jahr`) AS `jahr_count`,
        `artikel_id`
  FROM
       `t_kosten`
  GROUP BY
       `artikel_id`
  HAVING
       COUNT(DISTINCT `jahr`) > 1
 

Neue Beiträge

Zurück