我有一个表,我希望从中选择列的子集,但还要根据您在队列中的位置添加一个计算列。有以下字段(相关):
id: int, 自增, 主键 answertime: datetime, nullable
默认情况下,当某些内容提交到队列时,其应答时间为 NULL。所以,我希望选择队列中事物的 ID 以及它在队列中的排名(即排名 1 是下一个未回答的项目,等等)。这就是我的想法:
rank - id - COUNT(回答时间不为空的我的 id 以下的 id)。但是,我对此查询的语法有疑问:
SELECT id AS outerid, COUNT(
SELECT * FROM tablename WHERE id<outerid AND answertime IS NOT NULL
)
FROM tablename
WHERE answertime IS NULL;
现在,显然,这是错误的,因为我相当有信心您不能在聚合函数中嵌入选择,同样翻转 SELECT 和 COUNT 不起作用,因为您不能在代码中嵌入 SELECT (它只能在 WHERE 子句中使用)。
这甚至可以用 SQL 来完成,还是我需要在程序端添加一些逻辑?
如果有帮助,我将在 SQL Server 2008 上执行此操作,尽管我怀疑这会增加任何价值。