對於幫助臺應用程序,我們已經開放日期,關閉日期,技術人員姓名。 使用sql server如何創建查詢以顯示月份和多年:在一段時間內計數
- 每個月關閉了多少個工作?
- 這個月的最後一天有多少工作在隊列中,因爲技術員姓名沒有關閉?
- 按技術員姓名按月份平均工作的平均天數?
感謝
對於幫助臺應用程序,我們已經開放日期,關閉日期,技術人員姓名。 使用sql server如何創建查詢以顯示月份和多年:在一段時間內計數
感謝
您所需要的查詢使用GROUP BY子句一個非常簡單的SQL語句。由於您只是詢問需要按日期分組的信息,以及需要按日期分組的信息以及技術人員,所以您應該使用GROUPING SETS。
select year(closed) as year
, month(closed) as month
, Technician
, count(*) as count
, avg(datediff(DAY,Opened, Closed)) as avgDays
from jobs
where not Closed is null
group by grouping sets
(
(year(closed), month(Closed)),
(year(closed), month(Closed), technician)
)
order by year(closed)
, month(closed)
, Technician
如果您希望未關閉的作業在WHERE子句中刪除NOT,
謝謝 - 但這並沒有給我在每個月底開放的工作的數量 - 所以對於2015年1月,我需要知道在那個月的最後一天有多少工作沒有關閉。當我運行查詢時(例如12月),從1月份開始的舊歷史工作將全部關閉,因此在WHERE子句中刪除NOT將無濟於事。這是否需要子查詢? – David
這是一個部分答案,在日期字段中每個月的第一天使用助手錶。這不是由技術人員分組,但確實計算'待處理作業'
select date,
(select COUNT(1) FROM dbo.TASKS WHERE
OPENDATE<=date AND
(CLSDDATE>=date Or CLSDDATE is null))as 'Pending jobs',
(select COUNT(1) FROM dbo.TASKS WHERE
month(CLSDDATE)=MONTH(date) AND YEAR(clsddate)=YEAR(date)) as 'Completed jobs',
(select AVG(datediff(DAY,OPENDATE, CLSDDATE)) as avgDays FROM dbo.TASKS WHERE
month(CLSDDATE)=MONTH(date) AND YEAR(clsddate)=YEAR(date)) as 'AvgDays'
from dbo.CalendarMonths
where date<=GETDATE()
我會使用SSMS創建查詢,但您可以在任何文本編輯器中執行此操作。 –