직원의 일일 프로그램을 보여주는 테이블이 있습니다.하루에 1 레코드를 얻는 것은 2 개의 다른 레코드를 포함합니다.
SELECT COUNT(*) AS TotalDay FROM [User]
INNER JOIN [x] ON [x].UserID = [User].ID
WHERE
StartTime BETWEEN '20120611' AND '20120618' AND UserID = 20
GROUP BY [User].ID, [User].Name
ORDER BY Name
7 개의 레코드가 반환됩니다. 하루에 한 명의 사용자 (UserID)가 두 곳으로 갈 수 있기 때문입니다.
예를 들어, 사용자는이 20,120,611 20,120,611 13시 30분 0초 에 8시 30분 0초에서 이루어 가고 20,120,611 19시 0분 0초
에 20,120,611 14시 0분 0초에서 B 장소 갔다 이 쿼리를 사용하면 2 레코드를 반환합니다.
SELECT COUNT(*) AS TotalDay FROM [User]
INNER JOIN [x] ON [x].UserID = [User].ID
WHERE
StartTime = '20120611' AND UserID = 20
GROUP BY [User].ID, [User].Name
ORDER BY Name
그러나 작업이 하루에 있었기 때문에 하나의 레코드를 얻고 싶습니다.
어떻게받을 수 있습니까?
나는 MSSQL을 사용합니다. StartTime은 sql의 datetime입니다.
귀하의 쿼리에 따라 총 연산이 계산됩니다. 별개의 일수를 찾고 있다면 두 번째 쿼리에서 count (*) 대신'count (distinct starttime)'을 사용할 수 있습니다. 나를 교정하십시오 내가 잘못하면 .. –
날짜와 시간 부분을 두 개의 열에 보관하고 있습니까? 두 번째 쿼리는 시간이 StartTime의 일부일 경우 0을 반환하기 때문에 묻습니다. 스키마를 좀 더 명확하게 설명해 주시겠습니까? –