2011-06-05 58 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