Hello ,
here is a sample .
--First create one temporary table .
CREATE TABLE #TMP
(
NAME VARCHAR(50),
DATE DATETIME ,
PRESENT_STATUS VARCHAR(10)
)
--insert data
INSERT INTO #TMP VALUES ('A','2016-07-01','PRESENT')
INSERT INTO #TMP VALUES ('M','2016-07-01','PRESENT')
INSERT INTO #TMP VALUES ('A','2016-07-02','ABSENT')
INSERT INTO #TMP VALUES ('M','2016-07-02','ABSENT')
INSERT INTO #TMP VALUES ('A','2016-07-03','PRESENT')
INSERT INTO #TMP VALUES ('M','2016-07-03','PRESENT')
INSERT INTO #TMP VALUES ('A','2016-07-04','ABSENT')
INSERT INTO #TMP VALUES ('M','2016-07-04','PRESENT')
--NOW DECLARE ONE DATETIME FOR START DATE OF THE MONTH
DECLARE @STARTDATE DATETIME
SET @STARTDATE=(SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
--NOW SIMPLE SELECT THE COUNT OF PRESENT STATUS
SELECT COUNT(1) AS PRESENT_COUNT , NAME FROM #TMP WHERE PRESENT_STATUS='PRESENT'
AND DATE BETWEEN @STARTDATE AND @ENDATE --HERE @ENDATE WILL BE THE LAST DATE
GROUP BY NAME
Thanks