这是我正在做的简化版本,但我无法得到任何工作。在'ERR'之后,该语句给出了一个没有逗号的错误。我希望这个专栏是'月',我想这会有效,但我遇到了很多麻烦。谢谢你的帮助!
select a.POL_PRI_RSK_ST_CD, a.MASTER_COMPANY_NBR, case when a.char046 is NULL then 'ERR' when a.char046 > '010' then '11+' else a.char046 end as Policy_Years, a.Last7Days, a.Last30Days, a.Last90Days from reporting a inner join Repository b on a.RECORD_ID = b.RECORD_ID where a.POL_OGN_EFF_DT >= '2008-11-01' group by a.POL_PRI_RSK_ST_CD, a.MASTER_COMPANY_NBR, case when a.char046 is NULL then 'ERR' when a.char046 > '010' then '11+' else a.char046 end as Policy_Years, a.Last7Days, a.Last30Days, a.Last90Days
答案 0 :(得分:2)
尝试不带逗号...请遵循示例。
select
case
when a.month is NULL then 'ERR'
when a.month > '011' then '12'
else a.month
end as Month,
a.Last7Days
from ...
答案 1 :(得分:2)
注意:这是问题评论中调试会话的结果。
错误Incorrect syntax near the keyword 'as'.
是由as Policy_Years
子句中的GROUP BY
引起的。您不得在as
条款中使用GROUP BY
。
答案 2 :(得分:0)
select
day, year,
case
when a.month is NULL then 'ERR'
when a.month > '011' then '12'
else a.month end as Month,
a.Last7Days
答案 3 :(得分:0)
我认为你在案件结束后错过了'AS'。
答案 4 :(得分:0)
修复逗号:
select
day, year,
case
when a.month is NULL then 'ERR'
when a.month > '011' then '12'
else a.month
end Month,
a.Last7Days
from [table]
答案 5 :(得分:0)
在Day
和Year
周围放置方括号,如下所示:
select a.[Day], a.[Year], ...
答案 6 :(得分:0)
解决关于'多部分标识符'日'的新错误消息,
表格中有day
和year
列吗?
您的查询中的From后面是什么?你是在一起加入多个表吗?请显示整个查询?
好的,基于您编辑过的问题,(您不能在Group By中使用别名)试试这个:
select a.POL_PRI_RSK_ST_CD,
a.MASTER_COMPANY_NBR,
case when a.char046 is NULL then 'ERR'
when a.char046 > '010' then '11+'
else a.char046 end as Policy_Years,
a.Last7Days, a.Last30Days, a.Last90Days
from reporting a
join Repository b
on a.RECORD_ID = b.RECORD_ID
where a.POL_OGN_EFF_DT >= '2008-11-01'
group by a.POL_PRI_RSK_ST_CD,
a.MASTER_COMPANY_NBR,
case when a.char046 is NULL then 'ERR'
when a.char046 > '010' then '11+'
else a.char046 end,
a.Last7Days, a.Last30Days, a.Last90Days
但实际上,你根本没有聚合函数,只是在select中的每个表达式上都有一个组,所以你需要的只是一个不同的关键词,你根本不需要该组:
select Distinct a.POL_PRI_RSK_ST_CD,
a.MASTER_COMPANY_NBR,
case when a.char046 is NULL then 'ERR'
when a.char046 > '010' then '11+'
else a.char046 end as Policy_Years,
a.Last7Days, a.Last30Days, a.Last90Days
from reporting a
join Repository b
on a.RECORD_ID = b.RECORD_ID
where a.POL_OGN_EFF_DT >= '2008-11-01'
答案 7 :(得分:0)
您无法在AS
中使用GROUP BY
别名。表达式应该与SELECT中没有别名的表达式匹配。