Sql 雪花左加入日期范围

Sql 雪花左加入日期范围,sql,database,left-join,snowflake-cloud-data-platform,Sql,Database,Left Join,Snowflake Cloud Data Platform,我正在处理一个带有日期范围的雪花数据库左连接查询。请在下面查找示例表内容 我的雪花SQL查询: 选择订单日期, 如果订单日期为空,则“否”或“是”以订单结束, C.客户识别号,C.姓名 来自客户C C.CUSTOMER\u ID=O.CUSTOMER\u ID上的左联合订单 和O.ORDER_DATE>=日期添加(第-3天,当前_日期) 我期望的输出-我希望获得所有客户最近3天的记录,以及他们是否下了订单,如下所示 给定雪花查询的当前数据输出为 我不知道问题是否出在日期范围上(反正我需要日

我正在处理一个带有日期范围的雪花数据库左连接查询。请在下面查找示例表内容

我的雪花SQL查询: 选择订单日期, 如果订单日期为空,则“否”或“是”以订单结束, C.客户识别号,C.姓名 来自客户C C.CUSTOMER\u ID=O.CUSTOMER\u ID上的左联合订单 和O.ORDER_DATE>=日期添加(第-3天,当前_日期)

我期望的输出-我希望获得所有客户最近3天的记录,以及他们是否下了订单,如下所示

给定雪花查询的当前数据输出为

我不知道问题是否出在日期范围上(反正我需要日期范围),因为我第一天就得到了所需的结果。但在接下来的几天里,我只在下订单时收到这些记录。如预期结果所示,我希望获得所有客户记录,包括他们是否下了订单等详细信息


提前感谢

使用
交叉联接
生成行,然后使用
左联接
引入结果:

SELECT O.CTE, C.CUSTOMER_ID, C.NAME,
       MAX(CASE WHEN O.CUSTOMER_ID IS NULL THEN 'NO' ELSE 'YES' END) AS ORDER_PLACED, 
FROM CUSTOMER C CROSS JOIN
     (SELECT DISTINCT O.ORDER_DATE AS dte
      FROM ORDERS O
      WHERE O.ORDER_DATE >= DATEADD(DAY, -3, CURRENT_DATE)
     ) D LEFT JOIN
     ORDERS
     ON C.CUSTOMER_ID =  AND AND D.DTE = O.ORDER_DATE
GROUP BY O.CTE, C.CUSTOMER_ID, C.NAME;

当然,您可以为
d
派生表明确列出日期。

驱动查询的是
ORDER\u DATE
还是
CALENDAR\u DATE
? 如果某一天没有一个订单,那么他们在
ORDER\u下的
列中都应该有
NO

如果是,对答案的一些更改来自:


请不要张贴图片!只是扫描一下,但是您是否尝试过删除“LEFT”并使用内部联接?每个客户的订单的最后3天或过去3天内的订单?似乎您希望客户表中的所有记录在过去3天内显示“order placed”。如果是这种情况,则左连接是正确的,但是,您正在删除3天前下单的客户。请从其他文本中转述或引用。给出你所需要的&把它和你的问题联系起来。仅将图像用于不能表示为文本或扩充文本的内容。无法搜索或剪切粘贴图像。包括带有图像的图例/图例和说明。在发布之前,请查看编辑框下方的格式化版本。阅读“编辑帮助”“重新内联和块格式”中的代码和引用。
SELECT d.CAL_DATE, DECODE(COUNT(o.ORDER_ID), 0, 'NO', 'YES') ORD_PLCD, c.CUSTOMER_ID, c.NAME
FROM (
    SELECT DATEADD(DAYS, -SEQ1(), CURRENT_DATE) CAL_DATE
    FROM TABLE(GENERATOR(ROWCOUNT => 4))
) d
CROSS JOIN CUSTOMER c
LEFT OUTER JOIN ORDERS o ON o.ORDER_DATE = d.CAL_DATE AND o.CUSTOMER_ID = c.CUSTOMER_ID
GROUP BY d.CAL_DATE, c.CUSTOMER_ID, c.NAME