如何使用列日期对 TABLE 的行进行分组

HOW TO GROUP ROWS OF A TABLE WITH COLUMN DATE

我想要一个查询来显示仅包含产品的容器数量,因此日期小于 01/01/2019 并且日期不为空..

示例:

我的 table : 选项卡

Num_Container Num_Product Date_Product
1 A1 01/01/2020
1 A2 01/01/2018
1 A3 01/01/2021
2 A4 01/01/2017
2 A5 01/01/2018
2 A6 01/01/2019
3 A7 Null
3 A8 01/01/2019
3 A9 01/01/2016

预期结果是:

Num_Container
2

容器必须仅包含小于或等于日期 01/01/2019 且日期不为空的产品。

可能是这样

select Num_Container
from yourtable 
group by Num_Container
having max(Date_Product)< DATE'2019-01-01'

你可以尝试在HAVING中使用条件聚合函数,它可以使用反向逻辑得到计数是0

SELECT Num_Container
FROM tab
GROUP BY Num_Container
HAVING COUNT(CASE WHEN Date_Product > TO_DATE('01/01/2019', 'DD/MM/YYYY') OR Date_Product IS NULL THEN 1 END) = 0