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

SQL Server按周判断价格19.17000是否存在的查询结果不符问题

问题根因

现有代码所有行都被标记为存在的核心原因是:EXISTS子查询没有和外层当前行的公司ID、年份、周数做关联匹配,只要全表存在任意一条价格为19.170000的记录,所有行的判断都会返回真,不符合按周维度标记的需求。

修正后代码

SELECT 
    CASE WHEN EXISTS (
        SELECT 1 
        FROM table1 t2 WITH (NOLOCK)
        WHERE t2.Price = 19.170000
        -- 关联外层当前行的维度,仅判断当前周是否存在目标价格
        AND t2.companyId = t1.companyId
        AND YEAR(t2.calendarDate) = YEAR(t1.calendarDate)
        AND DATEPART(WEEK, t2.calendarDate) = DATEPART(WEEK, t1.calendarDate)
    ) THEN '存在记录' ELSE '不存在记录' END AS 交易标记,
    YEAR(calendarDate) AS 年份,  
    DATEPART(WEEK, calendarDate) AS 周数,
    calendarDate AS 日历日期,
    Price AS 价格
FROM table1 t1
WHERE companyId = 18527

逻辑说明

修改后子查询会针对外层每一行的所属公司、年份、周数单独做校验:只要该周内存在任意一天价格为19.170000,该周所有行都会标记为存在,否则标记为不存在,完全匹配预期输出要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:24:03