2012-03-05 36 views
1

我建立使用VS2010我的應用程序的報告月報。爲C#應用程序

應用程序所需的數據存儲在一個SQL Server 2008 R2數據庫。

列是

DateCreated (DateTime) 
CardPrinted (bit) 
DatePrinted(DateTime) 

我想創建一個報告將顯示,每月從2012年1月起,

  1. 總的CardPrinted號week1
  2. 總數CardPrinted爲week2
  3. CardPrinted總數譯員更加
  4. CardPrinted一週總數4

NB:如果印刷在卡上,有標記1在數據庫中,從而使CardPrinted
列是1或0。

請予需要有人來幫助我實現這一目標所需的查詢。

+1

你嘗試過什麼到目前爲止?讓我們看看你的努力 - 我們會幫助,但我們不會只寫整個查詢你..... – 2012-03-05 12:40:45

回答

3

這裏是一個開始

Select DATEPART (week , DatePrinted) as WeekNo, Count(*) as TotalNumberPrinted 
From SomeTable 
Where CardPrinted = 1 
And DatePrinted >= '2012-01-01' 
Group by DATEPART (week , DatePrinted) 
+1

應該是'2012-12-01'是'2012-01-01'?這似乎是過濾從2012年12月打印的東西(我懷疑這將是備用:))。 – Chris 2012-03-05 12:49:56

+0

很高興有人把這個注意力放到了細節上。編輯以 – 2012-03-05 15:08:00

+1

我發現堆棧溢出的大多數教育的部分之一是看着別人的答案,並確保我知道他們在做什麼(爲什麼),所以我經常發現自己確保答案的工作。有時候(在不太明顯的情況下)我會問一個問題,並發現我錯了,並且學習了一些令人興奮和新的東西。 :)有時候,我可能沒有想到它的一些簡單的技巧(比如在這裏用datepart分組)。 – Chris 2012-03-05 16:27:05

0

謝謝託尼·霍普金森。
稍加修改後,我得到了它的權利。 下面是該查詢:

SELECT DATEPART(MONTH,DatePrinted)AS Month_of_year, 
DATEPART(WEEK,DatePrinted) AS Weeks, COUNT(*) AS No_ofCardprinted 
From MyTable 
Where CardPrinted = 1 and DateCreated between DATEADD(Day, - 61, GETDATE()) 
and DATEADD(Day, -0, GETDATE()) 
Group by DATEPART (WEEK , DatePrinted), DATEPART(MONTH,DatePrinted) 
order by Month_of_year ASC 
+1

你應該接受他的回答。它給了他在這個網站的點,並幫助其他人有類似的問題。 – aKzenT 2012-04-05 15:45:17