SQL:我的语法是否正确?

时间:2011-06-05 12:03:14

标签: sql

q1:给出一个表:ID,Date,Status。编写一个接收@ID @Date的SQL查询,并检索该日期具有该ID的人员的状态,或者该日期之前的最后状态(如果该日期不存在)。

q2:给出一个表:ID,Date,Money。编写一个SQL查询,检索表中显示的日期的平均金额。

即。对于下表,平均值为600/2(有两个不同的日期)

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

1 个答案:

答案 0 :(得分: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

注意我是如何在计数函数内移动distinct。