在DATE领域填补空白

时间:2016-06-07 14:03:05

标签: sql postgresql tableau

我正在查询DATE字段:

SELECT  DATE  ,
    FIELD2 ,
    FIELD3 
into Table_new
FROM    Table_old
WHERE (criteria iLIKE '%xxxyyy%')

DATE字段从2010年10月1日开始运行,但在此过程中缺少了几天。当我导出数据时(例如,在Tableau中),我需要将数据与没有任何缺失日期的日历对齐。这意味着我需要一个空格/持有者来表示日期,即使查询中该日期不存在任何数据。我怎样才能做到这一点?

现在我正在导出数据,并手动创建一个没有日期数据的空间,效率极低。

2 个答案:

答案 0 :(得分:2)

Tableau可以本机执行此操作。无需更改数据集。您只需确保您的DATE字段属于Tableau中的日期类型,然后显示空列/行。

我的测试数据:

enter image description here

在我显示空列之前:

enter image description here

我如何显示空列:

enter image description here

显示空列后(最终结果):

enter image description here

如果您想限制这些日期,可以将日期字段添加到过滤器,选择日期范围和Apply to Context

enter image description here

答案 1 :(得分:1)

在Postgres中,您可以轻松生成日期:

select mm.date, t.field1, t.field2
from (select generate_series(mm.mindate, mm.maxdate, interval '1 day') as date
      from (select min(date) as mindate, max(date) as maxdate
            from table_old
            where criteria ilike '%xxxyyy%'
           ) mm
     ) d left join
     table_old t
     on t.date = mm.date and
        criteria ilike '%xxxyyy%';

返回条件的最小值和最大值之间的所有日期。如果您还有其他日期范围,请将其用于generate_series()

注意:criteria上的最终条件需要放在on子句而不是where子句中。