Hilfe bei Abfrage (Summe)

Hazel4tw1

Aktiver Benutzer
Beiträge
37
Hallo,

habe folgende Abfrage:

SELECT Temporaer.Jahr,
Temporaer.Monat,
SUM (Temporaer.Stunden)
FROM (SELECT Month(ServiceTickets.Resolution_SLA_Stopped_Date) AS Monat,
Year(ServiceTickets.Resolution_SLA_Stopped_Date) AS Jahr,
Sum(ServiceTickets.TimeEntry_Sum_Total) AS Stunden
FROM ServiceTickets
WHERE ServiceTickets.Duty_Ticket IS NOT NULL) AS Temporaer
GROUP BY Temporaer.Jahr,
Temporaer.Monat
ORDER BY Temporaer.Jahr,
Temporaer.Monat

Warscheinlich habe ich einen groben Gedanken Fehler und deswegen funktioniert das nicht.

Es soll am Ende eine Tabelle mit 3 Spalten rauskommen, mit 12 Zeilen
wo jeweils in der ersten immer 2012 steht, in der zweiten der jeweilige Monat (1-12) und in der dritten die zusammen gefassten Stunden (summe) des jeweiligen Monats.

Ich hoffe ihr könnt mir helfen.

Mit freundlichen Grüßen
 
Werbung:
Hallo,

habe folgende Abfrage:

SELECT Temporaer.Jahr,
Temporaer.Monat,
SUM (Temporaer.Stunden)
FROM (SELECT Month(ServiceTickets.Resolution_SLA_Stopped_Date) AS Monat,
Year(ServiceTickets.Resolution_SLA_Stopped_Date) AS Jahr,
Sum(ServiceTickets.TimeEntry_Sum_Total) AS Stunden
FROM ServiceTickets
WHERE ServiceTickets.Duty_Ticket IS NOT NULL) AS Temporaer
GROUP BY Temporaer.Jahr,
Temporaer.Monat
ORDER BY Temporaer.Jahr,
Temporaer.Monat

Warscheinlich habe ich einen groben Gedanken Fehler und deswegen funktioniert das nicht.

Es soll am Ende eine Tabelle mit 3 Spalten rauskommen, mit 12 Zeilen
wo jeweils in der ersten immer 2012 steht, in der zweiten der jeweilige Monat (1-12) und in der dritten die zusammen gefassten Stunden (summe) des jeweiligen Monats.

Ich hoffe ihr könnt mir helfen.

Mit freundlichen Grüßen


Was passiert denn? Viel zu viele Stunden? Kein Wunder, Du summierst auch doppelt und hast in der inneren Abfrage kein GROUP BY.

FAIL.

Andreas
 
Ja genau, habe zu viele Stunden.
Das doppelte SUM war natürlich unabsichtlich.

SELECT Temporaer.Jahr,
Temporaer.Monat,
Temporaer.Stunden
FROM (SELECT Month(ServiceTickets.Resolution_SLA_Stopped_Date) AS Monat,
Year(ServiceTickets.Resolution_SLA_Stopped_Date) AS Jahr,
Sum(ServiceTickets.TimeEntry_Sum_Total) AS Stunden
FROM ServiceTickets
WHERE ServiceTickets.Duty_Ticket IS NOT NULL
GROUP BY Temporaer.Jahr,
Temporaer.Monat
ORDER BY Temporaer.Jahr,
Temporaer.Monat) AS Temporaer

Setz ich das Group by in die innere Abfrage kommt folgender Fehler:
Msg 1033, Level 15, State 1, Line 12
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.
 
Ja genau, habe zu viele Stunden.
Das doppelte SUM war natürlich unabsichtlich.

SELECT Temporaer.Jahr,
Temporaer.Monat,
Temporaer.Stunden
FROM (SELECT Month(ServiceTickets.Resolution_SLA_Stopped_Date) AS Monat,
Year(ServiceTickets.Resolution_SLA_Stopped_Date) AS Jahr,
Sum(ServiceTickets.TimeEntry_Sum_Total) AS Stunden
FROM ServiceTickets
WHERE ServiceTickets.Duty_Ticket IS NOT NULL
GROUP BY Temporaer.Jahr,
Temporaer.Monat
ORDER BY Temporaer.Jahr,
Temporaer.Monat) AS Temporaer

Setz ich das Group by in die innere Abfrage kommt folgender Fehler:
Msg 1033, Level 15, State 1, Line 12
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

Schon besser. Nun läßt das äußere noch weg und dann ist vielleicht alles gut. Falls MySQL mitspielt.
 
Was meinst du mit dem äußeren?
Etwa so?

SELECT *
FROM (SELECT Month(ServiceTickets.Resolution_SLA_Stopped_Date) AS Monat,
Year(ServiceTickets.Resolution_SLA_Stopped_Date) AS Jahr,
Sum(ServiceTickets.TimeEntry_Sum_Total) AS Stunden
FROM ServiceTickets
WHERE ServiceTickets.Duty_Ticket IS NOT NULL
GROUP BY Temporaer.Jahr,
Temporaer.Monat
ORDER BY Temporaer.Jahr,
Temporaer.Monat) AS Temporaer

kommt trotzdem der Fehler:

Msg 1033, Level 15, State 1, Line 10
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.
 
Code:
SELECT    *
FROM    (    SELECT    month(ServiceTickets.Resolution_SLA_Stopped_Date) AS Monat,
                    year(ServiceTickets.Resolution_SLA_Stopped_Date) AS Jahr,
                    sum(ServiceTickets.TimeEntry_Sum_Total) AS Stunden
            FROM    ServiceTickets
            WHERE    ServiceTickets.Duty_Ticket IS NOT NULL ) Temporaer
GROUP BY Temporaer.Jahr,Temporaer.Monat
ORDER BY Temporaer.Jahr,Temporaer.Monat

PS: Falsches Unterforum, du hast MS SQL Server.
 
Code:
SELECT    *
FROM    (    SELECT    month(ServiceTickets.Resolution_SLA_Stopped_Date) AS Monat,
                    year(ServiceTickets.Resolution_SLA_Stopped_Date) AS Jahr,
                    sum(ServiceTickets.TimeEntry_Sum_Total) AS Stunden
            FROM    ServiceTickets
            WHERE    ServiceTickets.Duty_Ticket IS NOT NULL ) Temporaer
GROUP BY Temporaer.Jahr,Temporaer.Monat
ORDER BY Temporaer.Jahr,Temporaer.Monat

PS: Falsches Unterforum, du hast MS SQL Server.

Da kann man auch Aggregieren ohne Gruppieren? Also da in dem inneren Select machst das ja. Ich hätt gedacht, so doof ist nur MySQL, muß ich wohl mein Weltbild korrigieren...
 
Natürlich nicht, ich war von dem Temporaer Alias irritiert und hab die Klammer verschoben.
Code:
SELECT    *
FROM    (    SELECT    month(ServiceTickets.Resolution_SLA_Stopped_Date) AS Monat,
                    year(ServiceTickets.Resolution_SLA_Stopped_Date) AS Jahr,
                    sum(ServiceTickets.TimeEntry_Sum_Total) AS Stunden
            FROM    ServiceTickets
            WHERE    ServiceTickets.Duty_Ticket IS NOT NULL
            GROUP BY Jahr,Monat ) AS Temporaer
ORDER BY Temporaer.Jahr,Temporaer.Monat
 
Hi ukele,
die Abfrage funktioniert leider auch nicht, so hatte ich es auch probiert.

Fehler:
Msg 4104, Level 16, State 1, Line 7
The multi-part identifier "Temporaer.Jahr" could not be bound.
Msg 4104, Level 16, State 1, Line 8
The multi-part identifier "Temporaer.Monat" could not be bound.

EDIT: Sry für das falsche Forum
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben