Sql server 2005 在SQLServer2005中,通过单个查询按总数和按详细信息获取月度记录
我正在使用SQLServer2005 我想在单个结果中从Sql server 2005 在SQLServer2005中,通过单个查询按总数和按详细信息获取月度记录,sql-server-2005,subquery,Sql Server 2005,Subquery,我正在使用SQLServer2005 我想在单个结果中从appointment表中获取monthlyTotalAppointment和monthlyEmployeewiseTotal 预约表 appoinmentId appoinmentDate employeeId 我可以成功地从以下查询中获取MonthlyTotalAppoint,并获取EmployeeWiseToTaAppoint,但我希望每月获得EmployeeWiseAppoint SELECT * FROM (SELECT
appointment
表中获取monthlyTotalAppointment
和monthlyEmployeewiseTotal
预约表
appoinmentId
appoinmentDate
employeeId
我可以成功地从以下查询中获取MonthlyTotalAppoint
,并获取EmployeeWiseToTaAppoint
,但我希望每月获得EmployeeWiseAppoint
SELECT *
FROM (SELECT Datename(M, Dateadd(M, NUMBER - 1, 0)) AS month
FROM MASTER..SPT_VALUES
WHERE TYPE = 'p'
AND NUMBER BETWEEN 1 AND 12) months
LEFT JOIN (SELECT Datename(MM, APPOINMENTDATE) month,
Count(APPOINMENTID) AS TotalAppointment
FROM APPOINTMENT
GROUP BY Datename(MM, APPOINMENTDATE)) appoinment
ON months.MONTH = appoinment.MONTH
我得到以下输出
但是我想要下面的输出
appoinementId employeeId appoinemntDate
------------- ----------- ---------------
1 4 8/25/2012 12:00:00 AM
2 4 8/25/2012 12:00:00 AM
3 4 8/25/2012 12:00:00 AM
4 4 8/25/2012 12:00:00 AM
5 4 8/25/2012 12:00:00 AM
6 4 9/25/2012 12:00:00 AM
7 2 9/25/2012 12:00:00 AM
8 2 9/25/2012 12:00:00 AM
9 2 9/25/2012 12:00:00 AM
10 4 9/25/2012 12:00:00 AM
11 4 10/25/2012 12:00:00 AM
12 2 10/25/2012 12:00:00 AM
13 4 10/25/2012 12:00:00 AM
对于上述数据记录输出(对于EmployeeId 4)
但我想跟着你
Month MonthData Totalappoinemnt TotalEmployeewiseAppointmemt
------------- ----------- -------------- ------------------------------
January.. NULL.. NULL.. NULL..
Augest Augest 5 5
September September 5 2
October October 3 2
我在你的问题中遗漏了一些小问题,但大问题在这个问题中得到了解决:
SELECT t1.*,
t2.EMP_COUNT
FROM (SELECT Datename(MONTH, APPOINEMNTDATE) Month_Name,
Count(*) app_count
FROM APPOINTMENTTABLE
GROUP BY Datename(MONTH, APPOINEMNTDATE))T1
LEFT JOIN (SELECT Count(*) emp_count,
Datename(MONTH, APPOINEMNTDATE) Month_Name
FROM APPOINTMENTTABLE
WHERE EMPLOYEEID = 4
GROUP BY Datename(MONTH, APPOINEMNTDATE))T2
ON t1.MONTH_NAME = t2.MONTH_NAME
可以找到一个工作示例
少了什么
如果数据分布在几年内,你会把所有一年的一月加在一起。不,一点也不,我没有考虑年份。我不太明白你想做什么。你能为我们发布一些示例数据吗?好的,现在我明白了,正在写一个查询:-)
SELECT t1.*,
t2.EMP_COUNT
FROM (SELECT Datename(MONTH, APPOINEMNTDATE) Month_Name,
Count(*) app_count
FROM APPOINTMENTTABLE
GROUP BY Datename(MONTH, APPOINEMNTDATE))T1
LEFT JOIN (SELECT Count(*) emp_count,
Datename(MONTH, APPOINEMNTDATE) Month_Name
FROM APPOINTMENTTABLE
WHERE EMPLOYEEID = 4
GROUP BY Datename(MONTH, APPOINEMNTDATE))T2
ON t1.MONTH_NAME = t2.MONTH_NAME