You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询组合两列条件触发语法错误,寻求解决方案

问题分析与修正方案

错误原因

你遇到的报错是因为WHERE子句中的AND 'S6 - real-love'是无效的SQL语法。SQL的WHERE条件要求每个子句都是布尔表达式(即“列名 操作符 值”的结构),而单独的字符串无法被解析为合法的条件判断。

针对需求的修正方案

根据你描述的需求——统计AllSubscribershistroyland表中两个列(S4 - Dutch real-love和S6 - real-love)对应的订阅者数量,分两种常见场景给出修正后的查询:

场景1:订阅者需同时满足两个列的有效条件

如果这两个列是布尔类型(存储1/0或true/false),要筛选两个列都为“有效”的订阅者,查询如下:

SELECT SubscriberKey, COUNT(*) AS TotalSentLast180Days
FROM (
        SELECT s.SubscriberKey
        FROM ENT._Sent s
            INNER JOIN ENT.AllSubscribershistroyland ROCS
                ON ROCS.SubscriberKey = s.SubscriberKey
        WHERE ROCS.[S4 - Dutch real-love] = 1 
          AND ROCS.[S6 - real-love] = 1
          AND s.OYBAccountID = '85208879'
          AND s.EventDate >= DATEADD(DAY, -180, GETDATE())
    ) t
GROUP BY SubscriberKey

如果这两个列是字符串类型,要筛选两个列都不为空的订阅者,将条件改为:

WHERE ROCS.[S4 - Dutch real-love] IS NOT NULL 
  AND ROCS.[S6 - real-love] IS NOT NULL

场景2:订阅者的SLSegment__c值为两个选项之一

如果你的真实需求是筛选SLSegment__c字段值为S4 - real-love或S6 - real-love的订阅者(可能之前混淆了列名和字段值),可以用IN简化条件:

SELECT SubscriberKey, COUNT(*) AS TotalSentLast180Days
FROM (
        SELECT s.SubscriberKey
        FROM ENT._Sent s
            INNER JOIN ENT.AllSubscribershistroyland ROCS
                ON ROCS.SubscriberKey = s.SubscriberKey
        WHERE ROCS.SLSegment__c IN ('S4 - real-love', 'S6 - real-love')
          AND s.OYBAccountID = '85208879'
          AND s.EventDate >= DATEADD(DAY, -180, GETDATE())
    ) t
GROUP BY SubscriberKey

内容的提问来源于stack exchange,提问作者matewos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:10:24