如何在SQL中正确使用case
我在下面的SQL代码中遇到了一个小错误,原因我不明白 我用的是雅典娜如何在SQL中正确使用case,sql,amazon-web-services,amazon-athena,Sql,Amazon Web Services,Amazon Athena,我在下面的SQL代码中遇到了一个小错误,原因我不明白 我用的是雅典娜 选择 icustay_id, itemid, 日期差异(“秒”,时间戳“1970-01-01 00:00:00”,开始时间)作为开始时间, 日期差异(“秒”,时间戳“1970-01-01 00:00:00”,结束时间)作为结束时间, 当itemid为(301202190630047)且rateuom='mcg/kg/min'时,则为CAST(速率为十进制(10,3)) 来自mimiciii.inputevents\u mv 其
选择
icustay_id,
itemid,
日期差异(“秒”,时间戳“1970-01-01 00:00:00”,开始时间)作为开始时间,
日期差异(“秒”,时间戳“1970-01-01 00:00:00”,结束时间)作为结束时间,
当itemid为(301202190630047)且rateuom='mcg/kg/min'时,则为CAST(速率为十进制(10,3))
来自mimiciii.inputevents\u mv
其中itemid位于(30128030120305122174922190630111930047301272289222315221662304330307)
按icustay\u id、itemid、starttime订购
以下是错误
调用时发生错误(InvalidRequestException)
StartQueryExecution操作:第2:1行:外部输入“case”
应为{,,',FROM',WHERE',GROUP',ORDER',HAVING',
“LIMIT”、“UNION”、“EXCEPT”、“INTERSECT”}无法回滚
的语法为:
select语句中缺少END
。只需在之后添加END
关键字,然后在下面的查询中添加条件。它应该很好用
query_vaso_mv = """
select icustay_id, itemid, date_diff('second', timestamp '1970-01-01 00:00:00', starttime) as starttime, date_diff('second', timestamp '1970-01-01 00:00:00', endtime) as endtime,
case when itemid in (30120,221906,30047) and rateuom='mcg/kg/min' then cast(rate as DECIMAL(10,3)) end
from mimiciii.inputevents_mv
where itemid in (30128,30120,30051,221749,221906,30119,30047,30127,221289,222315,221662,30043,30307)
order by icustay_id, itemid, starttime
"""
您可以发布完整的select
语句,包括FROM
子句吗?您的案例
表达式中缺少结尾
(可能还有其他…
)
query_vaso_mv = """
select icustay_id, itemid, date_diff('second', timestamp '1970-01-01 00:00:00', starttime) as starttime, date_diff('second', timestamp '1970-01-01 00:00:00', endtime) as endtime,
case when itemid in (30120,221906,30047) and rateuom='mcg/kg/min' then cast(rate as DECIMAL(10,3)) end
from mimiciii.inputevents_mv
where itemid in (30128,30120,30051,221749,221906,30119,30047,30127,221289,222315,221662,30043,30307)
order by icustay_id, itemid, starttime
"""