求助:查询指定SKU且昨日下单的客户数据(从database_1提取)
SQL语句排查与修正
存在的问题
- 字段拼写错误:
LasrName是拼写错误,正确字段名应为LastName,数据库中不存在该字段会直接导致查询执行失败。 - 日期条件逻辑错误:原条件
a.LastOrderDate > dateadd(d,-1,getdate())会筛选出最后下单时间晚于昨日当前时刻的数据,不符合“最后下单日期为昨日”的需求。因为getdate()返回带时分秒的时间,直接比较会漏掉昨日早于当前时刻的订单。 - (可选)SKU类型匹配:如果
SKU字段是数值类型,IN子句中的单引号可以移除,避免隐式转换可能引发的性能或匹配问题。
修正后的SQL语句
方案1:通过日期截断匹配昨日全天
SELECT a.SubscriberKey, a.SKU, a.EmailAddress, a.FirstName, a.LastOrderDate, a.LastName, -- 修正拼写错误 a.Domain, a.BU, a.Status FROM [database_1] as a WHERE a.SKU IN ('50076710','50206711','50210619','50215355') AND CAST(a.LastOrderDate AS DATE) = CAST(DATEADD(d,-1,GETDATE()) AS DATE)
方案2:通过日期差判断昨日订单
SELECT a.SubscriberKey, a.SKU, a.EmailAddress, a.FirstName, a.LastOrderDate, a.LastName, -- 修正拼写错误 a.Domain, a.BU, a.Status FROM [database_1] as a WHERE a.SKU IN ('50076710','50206711','50210619','50215355') AND DATEDIFF(day, a.LastOrderDate, GETDATE()) = 1
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

