2016-04-09 7 views
1

Ich möchte eine gespeicherte Prozedur mit der Möglichkeit erstellen, Datumsbereiche zu filtern. Und ich möchte gruppiert werden, ohne Daten meine Daten. In wie vielen Jahren hat SUM alle Interessenten pro Mitarbeiter besucht?SQL-Abfrage Artikel pro Mitarbeiter zusammenfassen - Datumsbereich

Jetzt habe ich das aber es ist nicht gut genug. Ich sollte av.Date entfernen, aber ohne av.Date kann ich meinen Datumsbereich nicht filtern!

Select emp.Name+' '+emp.Surname as TaskOwner,av.Date,et.Event,COUNT(av.EventTypeID) as something 
from TableT av 
left join Employee emp on av.CreatedBy = emp.EmployeeD 
left join EventType et on av.EventTypeID = et.EventTypeID 
Group By av.Date, et.Event, emp.Name+' '+emp.Surname 
Order By TaskOwner desc 

Meine aktuelle Ausgabe ist wie

John Doe 2016-03-02 PROPOSALS ACCEPTED 1 
John Doe 2016-03-04 PROSPECTS VISITS 2 
John Doe 2016-03-07 COMMERCIAL VISITS 1 
John Doe 2016-03-08 PROPOSALS MADE   1 
John Doe 2016-03-13 PROPOSALS ACCEPTED 1 
Someone Else 2016-01-04 PROPOSALS MADE   1 
Someone Else 2016-03-03 COMMERCIAL VISITS 1 
Someone Else 2016-03-04 PROPOSALS ACCEPTED 1 
Someone Else 2016-03-06 PROPOSALS ACCEPTED 1 

Was ich brauche ist so etwas wie dieses:

John Doe  PROPOSALS ACCEPTED 2 
John Doe  PROSPECTS VISITS 2 
John Doe  COMMERCIAL VISITS 1 
John Doe  PROPOSALS MADE  1 
Someone Else PROPOSALS MADE  1 
Someone Else COMMERCIAL VISITS 1 
Someone Else PROPOSALS ACCEPTED 2 

Aber der Lage sein, Datumsbereiche filtern durch.

Antwort

1

Sie können unter Abfrage versuchen

Select 
    emp.Name+' '+emp.Surname as TaskOwner, 
    et.Event, 
    COUNT(av.EventTypeID) as something 
from TableT av 
    left join Employee emp on av.CreatedBy = emp.EmployeeD 
    left join EventType et on av.EventTypeID = et.EventTypeID 
Where 
    (ISNULL (@lowerdate) OR av.Date >= ISNULL(CAST(@lowerdate as datetime)) 
    AND 
    (ISNULL (@higherdate) OR av.Date <= CAST(@higherdate as datetime)) 
-- this is how we filter, assuming you get two dates always and also taking care of NULL 
Group By et.Event, emp.Name+' '+emp.Surname 
Order By TaskOwner desc 
Verwandte Themen