Sql ';预期EOS';在条件语句下
MS SQL Server在从CASE开始的条件语句下告诉我“预期EOS”。 有人能找出这个代码的错误吗Sql ';预期EOS';在条件语句下,sql,sql-server,conditional-statements,Sql,Sql Server,Conditional Statements,MS SQL Server在从CASE开始的条件语句下告诉我“预期EOS”。 有人能找出这个代码的错误吗 如前面的注释所示,大小写语法不正确。您还可以将乘法移到大小写表达式之外。要获得可运行的查询,还缺少一个grouping子句来处理跨goal列的聚合(AVG()) SELECT goal, AVG( case currency when 'GBP' then 1.3 when 'CAD' then 0.76
如前面的注释所示,
大小写
语法不正确。您还可以将乘法移到大小写
表达式之外。要获得可运行的查询,还缺少一个grouping
子句来处理跨goal
列的聚合(AVG()
)
SELECT goal,
AVG(
case currency
when 'GBP' then 1.3
when 'CAD' then 0.76
when 'AUD' then 0.71
...
else 1
end * goal) AS goal_currency_uniformed,
AVG(pledged) AS avg_num_pledged,
AVG(backers) AS avg_num_backers
FROM kickstarter
GROUP BY goal;
请考虑将汇率移动到单独的表中。这将允许您将此查询缩小一点,并具有额外的优势,即您可以在不修改代码的情况下更新汇率
SELECT ks.goal,
AVG(er.rate * ks.goal) as goal_currency_uniformed,
AVG(pledged) AS avg_num_pledged,
AVG(backers) AS avg_num_backers
FROM kickstarter ks
JOIN exchangerates er ON er.currency = ks.currency
GROUP BY goal;
查看所有操作。语法是当[condition]然后[expression]{ELSE expression}结束时的
大小写
您的汇率应该在单独的表中,而不是硬编码到查询中。欢迎您!如果这就完成了你的问题,那么你可以正式地“接受”答案,从一大堆“未回答的问题”中删除你的问题。
SELECT ks.goal,
AVG(er.rate * ks.goal) as goal_currency_uniformed,
AVG(pledged) AS avg_num_pledged,
AVG(backers) AS avg_num_backers
FROM kickstarter ks
JOIN exchangerates er ON er.currency = ks.currency
GROUP BY goal;