Sql server 如何在sqlserver中组合这两个查询
如何组合下面2个sqlserver查询Sql server 如何在sqlserver中组合这两个查询,sql-server,Sql Server,如何组合下面2个sqlserver查询 select COUNT(dept) as totalDept from employee where DATEPART(MM,joindate) = DATEPART(MM, DATEADD(MM, -1, getdate())) AND DATEPART(YYYY, joindate) = DATEPART(YYYY, DATEADD(MM, -1, getdate())) group by (DATENAME(MONTH,joindate)+' ,
select COUNT(dept) as totalDept
from
employee
where DATEPART(MM,joindate) = DATEPART(MM, DATEADD(MM, -1, getdate()))
AND DATEPART(YYYY, joindate) = DATEPART(YYYY, DATEADD(MM, -1, getdate()))
group by (DATENAME(MONTH,joindate)+' , '+DATENAME(YEAR,joindate))
select COUNT(*) from employee
group by dept
试试这个-
SELECT
totalDept = count(dept)
, gr.grouped_by_dept
FROM employee
CROSS JOIN (
SELECT grouped_by_dept = count(1)
FROM employee
GROUP BY dept
) gr
WHERE datepart (MM, joindate) = datepart (MM, dateadd(MM, -1, getdate()))
AND datepart (YYYY, joindate) = datepart (YYYY, dateadd(MM, -1, getdate()))
GROUP BY datename (MONTH, joindate) + ' , ' + datename (YEAR, joindate)
更新:
DECLARE @FirstDayOfMonth DATETIME
SELECT @FirstDayOfMonth = DATEADD(DAY, -(DAY(GETDATE()) - 1), GETDATE())
SELECT
t2.MONTHYEAR
, t2.[system]
, t3.[countBySystem]
, NewAddr = COUNT(t2.[address])
FROM (
SELECT
MONTHYEAR = DATENAME(MONTH, DateInserted) + ' , ' + DATENAME(YEAR, DateInserted)
, t.[system]
, t.[address]
FROM dbo.testtable t
WHERE DATEADD(DAY, -(DAY(t.DateInserted) - 1), t.DateInserted) = @FirstDayOfMonth
) t2
JOIN (
SELECT
t2.[system]
, [countBySystem] = COUNT(1)
FROM dbo.testTable t2
GROUP BY t2.[system]
) t3 ON t2.[system] = t3.[system]
GROUP BY
t2.MONTHYEAR
, t2.[system]
ORDER BY NewAddr
我喜欢with条款:
WITH
total_employees AS
(select dept,count(*) as emp_count from employee group by dept),
recent_employees AS
(select dept,count(*) as new_emp_count from employee
WHERE
DATEPART(MM,joindate) = DATEPART(MM, DATEADD(MM, -1, getdate()))
AND
DATEPART(YYYY, joindate) = DATEPART(YYYY, DATEADD(MM, -1, getdate()))
SELECT
total_employees.dept,emp_count "Total",new_emp_count,"New"
FROM
total_employees,recent_employees
WHERE
total_employees.dept = recent_employees.dept
可能会有一些小的语法错误,因为我没有测试它,但我有非常类似的报告
您不使用datediff获取上个月的日期有什么原因吗?因此,您希望获得总体员工人数和上个月加入的员工人数的计数?尝试了上述两种建议,但都无效。以下是实际查询选择(DATENAME(month,DateInserted)+','+DATENAME(YEAR,DateInserted))作为MONTHYEAR,系统,将(地址)计数为可测试的新地址,其中DATEPART(MM,DateInserted)=DATEPART(MM,DATEADD(MM,-1,getdate())和DATEPART(YYYY,DateInserted)=DATEPART(YYYY,DATEADD(MM,-1,getdate()))按组(DATENAME(MONTH,DateInserted)+',DATENAME(YEAR,DateInserted)),系统顺序按计数(地址)选择计数(*)从totalAdd按系统从testTable组添加