2012-02-06 37 views
0

我生成使用Excel每天每一個SQL查詢:如何通過增加天數來選擇查詢?

SELECT  COUNT(res_id) as TotalReservation 
FROM  bup_vw_res_reservation 
WHERE  res_deleted = 0 
AND   DATEPART(DAY,res_date_start) = 1 

我執行此查詢我想改變DAY各一次。要在我的Excel文件中生成1張表格,我需要在我的頁面中打開並關閉30個連接。如果我需要爲另一家公司製作另一張表格,那麼我需要再次執行相同的查詢。並在頁面變得非常慢:(

是否有另一種方式來獲得同樣的結果在1個查詢?

+0

所以你說你必須把最後一行中的數字從'1'改成'2'和'3'(依此類推)?你想在一個查詢中得到所有這些數字的結果? – vlad 2012-02-06 15:27:39

+0

是的,但我不知道該怎麼做。這就是爲什麼我執行這個查詢很多次,這使得我的網頁效率低,速度慢...... :( – wallace740 2012-02-06 15:29:01

+0

在這種情況下,Dervall的答案是正確的:'1至30'或'31'應該可以工作 – vlad 2012-02-06 15:31:15

回答

1

如果需要總,你可以如果你需要在每個預約做

DATEPART(DAY, res_date_start) BETWEEN 1 AND 30 

計數每一天,這樣做

SELECT  COUNT(res_id) as TotalReservation, DATEPART(DAY,res_date_start) 
FROM  bup_vw_res_reservation 
WHERE  res_deleted = 0 
GROUP BY DATEPART(DAY,res_date_start) 
+0

謝謝@Dervall,它工作 – wallace740 2012-02-06 15:37:16

+0

GROUP BY跳過空結果,我怎樣才能看到NULL結果?(像左外連接) – wallace740 2012-02-07 08:58:54

+0

這很難做到,因爲這將需要SQL到GROUP BY的東西,這不是一部分這個查詢就像你的SQL中不存在的日期數字一樣有解決方案,但是你需要首先創建一些包含所有有趣日子的臨時表格,''LEFT OUTER JOIN''用你的存儲庫並應用相同的分組。 – Dervall 2012-02-07 09:02:42

0

是,組結果進行DATEPART(DAY,res_date_start)像這樣:

SELECT  COUNT(res_id) as TotalReservation, DATEPART(DAY,res_date_start) 
FROM  bup_vw_res_reservation 
WHERE  res_deleted = 0 
      and res_date_start between beginning_of_month and end_of_month 
GROUP BY DATEPART(DAY,res_date_start) 

現在您擁有了所有需要的結果,您可以遍歷它們來生成每行Excel電子表格。