我有一个查询,其中我要区分新老员工,我要计算那里有多少新老员工。我如何隔离,我不想按分组使用分组。 这是我的查询
((SELECT mock.EID,
mock.ECode,
mock.BaseCode,
mock.STATUS,
mock.EmpName,
mock.Desig,
mock.CMP_ID,
CASE WHEN podt.empid IS NULL THEN CAST(0 AS bit)ELSE CAST(1 AS bit)END AS [select],
CONVERT(varchar, mock.JoiningDate, 106) AS JoiningDate,
CASE
WHEN DATEDIFF(DAY, mock.JoiningDate, '1/31/' + CAST(DATEPART(YEAR, GETDATE()) AS varchar)) > 60 THEN 'Old'
ELSE 'New'
END AS StatusEmployee
FROM (SELECT E.EID,
E.ECode,
E.BaseCode,
CASE WHEN E.EActive = 0 THEN 'ACTIVE' ELSE 'IN ACTIVE' END AS STATUS,
E.EmpName,
D.DesigDesc AS Desig,
E.CMP_ID,
CAST(E.JoiningDate AS datetime) AS JoiningDate
FROM PostingDetail pd,
Employee_Profile E,
DESIGNATION D
WHERE pd.EmpId = E.EID
AND E.Desig = D.DesigCode
AND pd.SubLoc IN (6700, 20400, 21300, 21900)
AND pd.EndDate IS NULL
AND CMP_ID IN ('SZSPL')
AND CAST(E.JoiningDate AS datetime) BETWEEN CAST(E.JoiningDate AS datetime) AND '1/31/' + CAST(DATEPART(YEAR, GETDATE()) AS varchar)) mock
LEFT OUTER JOIN PostingDetail_training podt ON mock.EID = podt.empid));
答案 0 :(得分:-3)
select SUM (CASE WHEN tbl.StatusEmployee= 'New' then 1 else 0 end ) NewEmployee,SUM (CASE WHEN tbl.StatusEmployee= 'Old' then 1 else 0 end ) OldEmployee
from (
(select mock.EID, mock.ECode, mock.BaseCode, mock.STATUS, mock.EmpName, mock.Desig, mock.CMP_ID, case when podt.empid is null then cast(0 as bit) else cast(1 as bit) End [select] ,convert(varchar,mock.JoiningDate,106)JoiningDate,
case when DATEDIFF(day,mock.JoiningDate,'1/31/'+cast(DATEPART(year,getdate())as varchar)) > 60 then 'Old'
else 'New' end as StatusEmployee
from (
SELECT E.EID, E.ECode, E.BaseCode, CASE WHEN E.EActive = 0 THEN 'ACTIVE' ELSE 'IN ACTIVE' END AS STATUS, E.EmpName, D.DesigDesc As Desig, E.CMP_ID ,CAST(E.JoiningDate AS datetime) JoiningDate
FROM PostingDetail pd, Employee_Profile E, DESIGNATION D
Where pd.EmpId = E.EID AND E.Desig = D.DesigCode AND pd.SubLoc in(6700, 20400, 21300, 21900) AND pd.EndDate is null AND CMP_ID IN('SZSPL') and cast(E.JoiningDate as datetime) between cast(E.JoiningDate as datetime) and '1/31/'+cast(DATEPART(year,getdate())as varchar)) mock left outer join PostingDetail_training podt on mock.EID=podt.empid
)) tbl