基于星期几返回计数或空值的 Netezza SQL 语句
Posted
技术标签:
【中文标题】基于星期几返回计数或空值的 Netezza SQL 语句【英文标题】:Netezza SQL statement to return count or null based on day of week 【发布时间】:2018-05-09 20:11:37 【问题描述】:我是 SQL 的初学者。我正在尝试确定是否有一种方法可以编写一个 SQL 语句,该语句将在一周中的某些天返回空值,并在一周中的其他天返回一个计数。我不能使用脚本(我使用的界面只允许我执行单个语句)。
逻辑是这样的:
if max(as_of_date) is a Saturday or Sunday, then return null
Else select count(*) from table where (etc).
【问题讨论】:
整个“if - else”结构只在一行内有意义(在 sql 中称为 CASE WHEN),但计数只在多行内有意义。请提供一组输入行和所需输出行的示例,我们当然可以提供帮助 谢谢。不幸的是,我正在尝试做的是使用 SQL 来实现调度软件真正应该做的事情。 【参考方案1】:我假设 AS_OF_DATE 是源表中的一列,并且您的输出应该只有一行,如果源表中的 ONE 行包含相关日期的记录,那么它将返回非空值。请详细说明问题(所需的输入/输出会很好)
Select
case when cnt>0
then cnt
end
from
( select count(*) cnt
from THE_TABLE
where EXTRACT(dow FROM AS_OF_DATE) not in (1,7)
) x
【讨论】:
想要的逻辑本质上是这样的:如果DATE_DIM表中的Max(as_of_date)是星期六或星期日,则返回null,否则返回现有SQL的结果(为单个数字--a计数)。 这个“单个数字”是否计算了与 as_of_date 列不同的表中的行数,as_of_date 是“current_date”吗? 我有点误会了这一点。实际的逻辑是从连接到 date-dim 表的不同表中获取计数。基本上从 table-a 中选择 count(*), date-dim where table-a.as-of-date = date-dim.date and date-dim.last-process-date = ‘Y’以上是关于基于星期几返回计数或空值的 Netezza SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 中提交具有空白或空值和非空白值的表单