繁体   English   中英

SQL查询:时间序列日期上的二进制字段

[英]SQL Query: Binary Fields on Dates for Time Series

我有一个表,如下所示:

ID  |  Date
1   |  2010-01-01
2   |  2010-02-01
3   |  2010-02-15
2   |  2010-02-15
4   |  2010-03-01

我在创建一个ID为行,时间段为列的表时遇到了麻烦。 对于给定的时间段,如果该ID在该时间段内具有关联的日期,我想放置1;如果没有,则放置0。

因此输出可能如下所示:

ID  |  Jan-10  |  Feb-10  |  Mar-10
1   |  1       |  0       |  0
2   |  0       |  1       |  0
3   |  0       |  1       |  0
4   |  0       |  0       |  1

做到这一点的最佳方法是什么?

我已经创建了一个新表,其中包含与上表中所有不同的ID,以期可以进行联接-但是我不确定如何处理1/0。

您可以使用简单的group by和条件聚合来做到这一点:

select id,
       max(case when month(t.date) = 1 and year(t.date) = 2010 then 1 else 0 end) as "Jan-10",
       max(case when month(t.date) = 2 and year(t.date) = 2010 then 1 else 0 end) as "Feb-10",
       max(case when month(t.date) = 3 and year(t.date) = 2010 then 1 else 0 end) as "Mar-10"
from "table" t
group by id;

因为您有很多时间段,所以我将使用Excel(或您喜欢的电子表格)中的公式为该列生成代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM