【发布时间】:2018-02-12 01:37:49
【问题描述】:
我们有两列 id 和 monthid。
我正在寻找的输出是基于 Quarter 将 year 从 month Id 中除。输出列应该来自季度。如果 id 处于活动状态,则输出应为 1 否则为 0 。如果 id 出现在第一季度中的任何一个(例如:仅 1 ),则输出仍为 1 。
像这样:
id month
-----------------------------------
100 2012-03-01 00:00:00.0
100 2015-09-01 00:00:00.0
100 2016-10-01 00:00:00.0
100 2015-11-01 00:00:00.0
100 2014-01-01 00:00:00.0
100 2013-04-01 00:00:00.0
100 2014-12-01 00:00:00.0
100 2015-02-01 00:00:00.0
100 2014-06-01 00:00:00.0
100 2013-01-01 00:00:00.0
100 2014-05-01 00:00:00.0
100 2016-05-01 00:00:00.0
100 2013-07-01 00:00:00.0
结果应该是这样的
ID YEAR QTR output (1 or 0)
--------------------------------------------------
100 2012 1 1
100 2012 2 0
100 2012 3 0
100 2012 4 0
100 2013 1 1
100 2013 2 1
100 2013 3 1
100 2013 4 0
以下是我尝试过的,但它没有返回预期的结果。请帮助我实现这一点。我希望输出为 0 时也是如此。
select a.id,a.year,a.month,
CASE WHEN a.month BETWEEN 1 AND 4 THEN 1
ELSE 0 END as output
from
(select id,trim(substring(claim_month_id,1,4)) as year,(INT((MONTH(monthid)-1)/3)+1) as month from test) a
group by a.id,a.year,a.month
任何帮助将不胜感激。
【问题讨论】:
-
你用的是什么数据库?
-
我正在尝试通过蜂巢
-
@Ani;是所有的耐心_id = 100?如果没有,有多少个patient_id?
-
并非所有 ID 都相同。数据为 1.8 gb,我只取了一个 ID 进行测试。
-
@Ani;这类似于昨天发布的问题; stackoverflow.com/questions/48732957/…。不知道是不是同一个人发的。
标签: mysql sql hive hiveql impala