2013-04-05 43 views
0

我想從我的表中獲取每天記錄的數量。 例如,我有一個表「Employee」,其中包含以下字段ID,EmpNo,DateHired。 和我有以下記錄如何查詢從第一天到最後一天的記錄數

ID EmpNo  DateHired 
1 000001  3/2/2013 12:00:00 AM 
2 000002  3/14/2013 12:00:00 AM 
3 000003  3/14/2013 12:00:00 AM 
4 000004  3/21/2013 12:00:00 AM 
5 000005  4/2/2013 12:00:00 AM 
6 000006  4/3/2013 12:00:00 AM 
7 000007  4/3/2013 12:00:00 AM 
8 000008  4/3/2013 12:00:00 AM 
9 000009  4/3/2013 12:00:00 AM 
10 000010  4/4/2013 12:00:00 AM 
11 000011  4/5/2013 12:00:00 AM 
12 000012  5/1/2013 12:00:00 AM 

而且目前的月份是四月, 我怎麼能得到這個值:

Count Day 
0 4/1/2013 12:00:00 AM 
1 4/2/2013 12:00:00 AM 
4 4/3/2013 12:00:00 AM 
1 4/4/2013 12:00:00 AM 
1 4/5/2013 12:00:00 AM 
0 4/6/2013 12:00:00 AM 
0 4/7/2013 12:00:00 AM 
0 4/8/2013 12:00:00 AM 
Up to 
0 4/30/2013 12:00:00 AM 
+1

你使用的是什麼版本的SQL Server? – 2013-04-05 06:22:24

回答

0

嘗試

SELECT COUNT(*) as 'Count', DateHired as 'Day' 
FROM  Employee 
WHERE DateHired BEWTEEN %date1 AND %date2 
GROUP BY DateHired 

未經檢驗的,應該工作,雖然。

0

這可能是查詢...

SELECT COUNT(ID) as Count, DateHired FROM Employee GROUP BY DateHired 

下面就可以的情況下有所幫助......

http://www.sqlite.org/lang_datefunc.html

希望它可以幫助..

1

您需要創建一個四月的整個月份的日曆,以獲得該月的整個日期。藉助於使用Common Table Expression,你可以得到你想要的。

創建日曆後,將其加入表Employee並使用LEFT JOIN,以便日期在表格上無匹配Employee仍將包含在結果中。

WITH April_Calendar 
AS 
(
    SELECT CAST('20130401' as datetime) AS [date] 
    UNION ALL 
    SELECT DATEADD(dd, 1, [date]) 
    FROM April_Calendar 
    WHERE DATEADD(dd, 1, [date]) <= '20130430' 
) 
SELECT a.date, COUNT(b.DateHired) totalCount 
FROM April_Calendar a 
     LEFT JOIN Employee b 
      ON a.date = b.DateHired 
GROUP BY a.date 
ORDER BY a.date 
相關問題