如果属性存在,则为1,否则为0

时间:2018-06-06 14:19:35

标签: sql oracle

在以下查询中,为1小时时间间隔内存在的每个属性输出1:

selectedColumn

如何修改此项以便为不在时间间隔内的每个属性输出0?

1 个答案:

答案 0 :(得分:2)

在评论中,您声明table2具有完整的属性列表。如果是这种情况,请将table1加入table2

select t2.attribute, count(t1.attribute)
from table2 t2
    LEFT OUTER JOIN table1 t1
        ON t2.attribute = t1.attribute 
        AND t1.timestamp >= trunc(sysdate-1/24, 'HH') 
        AND t1.timestamp < trunc(sysdate, 'HH')
group by t2.attribute;

WHERE子句中的时间戳过滤器转换为ON LEFT OUTER JOIN子句,以确保在table1执行LEFT OUTER JOIN之前截断LEFT OUTER JOIN中的结果。 table2将从table1中选择所有记录,并且仅在应用过滤器后选择与t1.attribute匹配的记录。

然后计算t2.attribute应该给你一个或你想要的0。最后在SELECT子句的 //hiding the current layer mapBox.setFilter(currentLayer, ["==",'gid', "_none_"]); //showing only the clicked feature by filtering it out with a unique id it has mapBox.setFilter(highlightedLayer, ["==",'gid', feature_gid]); 上执行GROUP BY。