执行以下代码后,我在关键字'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
我想在数据库中选择具有最大存储日期的记录总数。任何人都可以告诉我我做错了什么
答案 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