执行查询时关键字“select”附近的语法不正确

时间:2010-03-07 23:53:57

标签: sql sql-server-2005

执行以下代码后,我在关键字'select'附近获得了错误的语法。

declare @c int

SELECT @c = COUNT(*) 
  FROM (select id, max(date_stored)
         from table B
   INNER JOIN table P ON B.id = P.id
        where id = 3)

select @c

我想在数据库中选择具有最大存储日期的记录总数。任何人都可以告诉我我做错了什么

3 个答案:

答案 0 :(得分:1)

您需要为子查询添加别名

declare @c int
SELECT @c = COUNT(*) FROM
(
    select id, max(date_stored)
    from
    table B
    INNER JOIN
    table P
    ON
    B.id = P.id
    where
     id = 3
) x --alias
select @c

我仍然不明白为什么玩具在子查询中执行分组和最大值,如果您需要的只是一个计数

答案 1 :(得分:0)

SET @C = SELECT COUNT(*) FROM ...

此外,您是否需要在内部GROUP BY内执行SELECT?什么是“max()”调用应该是什么意思?什么表是“date_stored”字段?我认为你应该先得到内部查询,然后继续计算。

如果您正在尝试计算日期值等于给定“id”值的所有日期值的最新值的记录,那么您将需要将其显式化(除非SQL Server 2005有一些我不知道的新功能。

答案 2 :(得分:0)

declare @c int
SELECT @c = COUNT(aName.[ID]) FROM
(
    select [B.id], max(B.date_stored)
    from table B
    INNER JOIN table P ON B.id = P.id
    where B.id = 3
    -- group by [id] ???
) aName

select @c