2012-02-04 2 views
2

나는 SQL Server 데이터베이스를 가지고 있으며 다음 쿼리를 사용하여 주어진 직원이 늦은 출석 날짜 목록을 가져옵니다.동적 열의 행 수를 얻으려면

SELECT MIN(att.Date) 
    from Attendance att 
    where att.Date between '12/01/2011 00:00:00' and '12/31/2011 00:00:00' 
    and att.EmpID = 4700 
    GROUP BY EmpID, CONVERT(VARCHAR, att.Date , 111) 
    having min(CONVERT(VARCHAR, att.Date , 8)) > '09:00:00' 

쿼리는 열 이름이없는 날짜 목록을 반환합니다. 이 목록의 날짜를 계산해야합니다. 어떻게이 쿼리로이 작업을 수행 할 수 있습니까?

답변

3

이 시도 :

WITH CTE AS (
    SELECT MIN(att.Date) [minDate] 
    FROM Attendance att 
    WHERE att.Date between '12/01/2011 00:00:00' 
    AND '12/31/2011 00:00:00' 
    AND att.EmpID = 4700 
    GROUP BY EmpID, CONVERT(VARCHAR, att.Date , 111) 
    HAVING MIN(CONVERT(VARCHAR, att.Date , 8)) > '09:00:00') 

SELECT COUNT(minDate) FROM CTE 

Alt 키를 CTE를 사용하지 않고 :

SELECT COUNT(minDate) FROM (
    SELECT MIN(att.Date) [minDate] 
    FROM Attendance att 
    WHERE att.Date between '12/01/2011 00:00:00' 
    AND '12/31/2011 00:00:00' 
    AND att.EmpID = 4700 
    GROUP BY EmpID, CONVERT(VARCHAR, att.Date , 111) 
    HAVING MIN(CONVERT(VARCHAR, att.Date , 8)) > '09:00:00') AS tbl 
+0

덕분에 많은 형제를. 그게 많이 도움이 – Almaji

+0

그것은 내 기쁨이야 :) –

+0

내가 찾은 한 가지 문제가있다, 나는이 쿼리를 C#에서 nHibernate 쿼리로 사용할 수 없다. 그것은 말합니다 --- 질의는 SELECT 나 FROM으로 시작해야합니다 : 이제 무엇을할까요? : -s – Almaji

관련 문제