2011-07-30 114 views
0

我想計算總計數量和GROUP BY CarID,但目前無法執行此操作。如何將日期與日期範圍進行比較

在我的數據庫中有一些表格:TBL_CAR_TX,TBL_CAR,TBL_PERSON

table: TBL_CAR_TX 
------------------ 
select * from TBL_CAR_TX 
where TranDate >= '2011-06-09' and Trandate <= '2011-06-20' 

    TranID, AccID, CarID, TranDate, Type, Quantity, ..... 
    -------------------------------------------------------- 
    0  2563 BMW 2011-06-09 H -15 (1) 
    1  2563 BMW 2011-06-20 R  15 
    2  2563 BMW 2011-06-20 H  20 
    3  0055 TOY 2011-06-12 H -10 (2) 
    4  0055 TOY 2011-06-20 R  10 

... 

(H):保持,(R):釋放
如果我們改變WHERE語句的條件:

select * from TBL_CAR_TX where TranDate >= '2011-06-10' and Trandate <= '2011-06-19' 

(這些日期,我從外面得到它們) ==>所有記錄消失==>我無法計算,因爲數據不顯示。

看看錶TBL_CAR_TX,我們可以看到一個人從'2011-06-09'借到'寶馬',直到'2011-06-20'他纔將它返還。因此,如果我在SQL Server 2008中執行此操作,如何在2011-06-10至2011-06-19範圍內保留記錄(1)&(2)以進行計算。如果不能,我怎麼在java編程中做到這一點?任何建議。

table TBL_CAR: 

    MarketID, CarID, Name, Size, ... 
    --------------------------- 
    GER  BMW .... 
    JPA  TOY .... 

Table TBL_PERSON: 

    AccID, Name, Age, DOB, ... 
    ------------------------- 
    2563 Robert 
    0055 Mike 

非常感謝你的幫助

+1

你需要搜索日期比較函數(我猜一個叫做BETWEEN,但我在我的生活中曾經使用過一次MSSQL,但是有些SQL實現有這個功能) – naugtur

回答

1

我想計算數量和GROUP總BY CarID,但我目前還無法做到這一點。 因此,如果我在SQL Server 2008中做,我怎麼能保持從'2011-06-10'到'2011-06-19'範圍內的日期(1)&(2) 來計算。

只需從您的SQL中刪除=即可。

select CarID, SUM(QUANTITY) from TBL_CAR_TX where TranDate > '2011-06-09' and Trandate < '2011-06-20' GROUP BY CarID 

或使用BETWEEN SQL語句。

select CarID, SUM(QUANTITY) from TBL_CAR_TX where TranDate BETWEEN '2011-06-10' AND '2011-06-19' GROUP BY CarID 

如果不能,我怎樣才能做到這一點在Java編程?

你絕對可以過濾掉java中的數據,但是當SQL可以爲你完成工作時沒有意義。除非這是一個巨大的性能損失,否則在SQL中執行像這樣的處理幾乎總是值得的。

+0

wooo。我猜之間;)AFAIK BETWEEN版本應該更好地優化。 – naugtur

+0

感謝您的幫助,但我已經嘗試過但沒有記錄顯示 – Bryan

+0

@Bryan - 您粘貼了正確的數據嗎?你也得到一個SQL錯誤?可能是因爲TranDate未在表格中定義爲DATE字段。你能檢查表格模式嗎? – CoolBeans

相關問題