我遇到一种情况,需要从配置单元表中检索数据,其中month=current month。如果当前月份的数据不可用,我需要从上个月获取。如何在配置单元查询中实现这种情况。
我的问题对吗?
Select emp_name, emp_number,
case when emonth IS NULL then concat(year(current_date()),'-' ,month(current_date())-1) else emonth end
FROM db.emptable
where emonth =concat(year(current_date()),'-' ,month(current_date()))
我不确定上面的查询,因为如果表case condition中没有当前月份记录,只需在emonth列中指定previous month。但是如果月份是当前月份,我需要进行验证,否则获取上个月的数据。
2条答案
按热度按时间pgky5nke1#
月份(字符串日期)可用于从任何日期戳获取月份。
所以你可以试试:
选择emp\u name、emp\u number、case when emonth is null then month(add\u months(current\u date(),-1)),否则emonth end from db.emptable
abithluo2#
使用行号筛选数据:
在行\号中写入partition by子句,因为您需要正确计算它。在我的答案中,每一个emp\u数字都会计算出第\u行的数字。