2

我有一个关于在 sql 中编写查询的问题(在我之前的问题的继续中:减去两行的值并将其插入新列(不是后续行)):

我想写一个查询来计算用户在当前时间之前赢得比赛的次数,获胜的条件是 place=1 ;我希望将结果放在一个新列(win-frequency)中,并且当新的获胜发生时,[win-frequency] 的值会发生变化。在下图中,我手动计算了获胜频率。

http://www.8pic.ir/images/54691148512772358477.jpg

我编写了以下查询,但出现错误:

SELECT [user-name], 
   submissions,
   [date],
   place,
   recency,
   [win-recency],
   COUNT( SELECT [date] FROM [top-design1]] td1
          WHERE td1.[user-name] = [top-design1].[user-name]
          AND  place=1
          AND [date]< [top-design1].[date]
          ORDER BY [date] DESC) as win-frequency
        )
FROM [top-design1]

这是 sql 小提琴: http ://sqlfiddle.com/#!3/0ec5f

4

1 回答 1

2

您必须修复括号)[ORDER BY从相关子查询中删除 ,并转义列 name [win-frequency]。应该是这样的:

SELECT [user-name], 
   submissions,
   [date],
   place,
   recency,
   [win-recency],
   (SELECT COUNT([date])
    FROM [top-design1] td1
    WHERE td1.[user-name] = [top-design1].[user-name]
      AND  place = 1
      AND [date] < [top-design1].[date]
    ) as [win-frequency]
FROM [top-design1];
于 2013-04-14T07:57:16.030 回答