2011-06-05 31 views
0

q1:給定一個表格:ID,日期,狀態。編寫一個接收@ID @Date的SQL查詢,並在該日期之前檢索具有該ID的人的狀態,或者如果該日期不存在,則檢索該日期之前的最後狀態。SQL:我的語法正確嗎?

q2:給出一個表:ID,日期,金錢。編寫一個SQL查詢,檢索表中出現日期的平均金額。

即下表中的平均是對二分之六百(有兩個不同的日期)

ID1 1/1/2010 100 
ID2 1/1/2010 300 
ID2 2/1/2010 200 

我試圖寫爲上述問題的查詢。我會感激你的言論:

回答1

SELECT TOP 1 status from MyTable AS T 
WHERE T.Date <= @date && T.id = @id 
ORDER BY T.Date 

答案2

declare money_sum decimal 
declare days_count int 
money_sum = 
SELECT SUM(MONEY) FROM table_name 

days_count = 
SELECT DISTINCT COUNT(date) FROM table_name 

return money_sum/ days_count 
+4

如果您想知道語法是否正確,請嘗試執行查詢,並查看是否出現錯誤! – 2011-06-05 12:06:43

+0

通過在線免費平臺? – 2011-06-05 13:29:48

+0

通過您計劃在此代碼上運行的任何平臺! – 2011-06-05 13:30:52

回答

0

的語法,將取決於您使用的RDBMS中,我假設MSSQL,或者可能SYBASE ,基於您使用的TOP語法,在這種情況下,您需要在變量前使用@,並使用set關鍵字:

declare @money_sum decimal 
declare @days_count int 

set @money_sum = SELECT SUM(MONEY) FROM table_name 
set @days_count = SELECT COUNT(DISTINCT date) FROM table_name 

return @money_sum/ @days_count 

注意我也是如何移動計數函數內的獨特的。

+0

除此之外 - 聯繫可以嗎? 我確實使用MSSQL – 2011-06-05 13:31:05

+0

我的意思是第一個問題.. – 2011-06-05 14:04:11