无效的输入“ r”:预期的“ t / T”

时间:2019-05-13 14:20:53

标签: neo4j cypher

得到以下错误:

  

Neo.ClientError.Statement.SyntaxError:无效的输入“ r”:预期   't / T'(第4行,第9列(偏移量:116))“ sum(如果sr.WScore> sr.LScore   然后1 else 0)作为获胜者”

我的逻辑对吗??

MATCH (t:Teams),(sr:SeasonResults)
WHERE sr.WTeamID=t.TeamID and t.TeamName="x"  
RETURN count(wins),
sum(if sr.WScore > sr.LScore then 1 else 0 ) as wins

3 个答案:

答案 0 :(得分:0)

不使用情况下使用CASE

sum(CASE WHEN sr.WScore > sr.LScore THEN 1 ELSE 0 )

答案 1 :(得分:0)

WITHRETURN子句不能同时分配到变量(例如wins)和使用相同的变量。因此,不支持像RETURN COUNT(wins), SUM(...) AS wins这样的子句。

但是,如果您的用例只是为了计算相关SeasonResults节点拥有WScore > LScore的次数,则无需使用COUNT(),这应该足够:

MATCH (t:Teams), (sr:SeasonResults)
WHERE sr.WTeamID=t.TeamID and t.TeamName="x"
RETURN SUM(CASE WHEN sr.WScore > sr.LScore THEN 1 END) AS wins

答案 2 :(得分:0)

我认为,如果您将SeasonResults计入其中,sr.WTeamID=t.TeamID将为您提供所需的获胜数。

我假设WTeamID是获胜球队的ID,因此当该球队的ID等于WTeamID的{​​{1}}时,则表示该球队获胜。这样的SeasonResults的总数将是这支球队的总胜利。

您可以将查询的结构与以下内容相同:

SeasonResults