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

同比季度销售数据对比SQL查询结果异常问题求助

问题排查与解决步骤

一、关联逻辑问题修正

1. 检查CTE的聚合完整性

你的两个CTE必须按ProductID做分组聚合,确保每个ProductID只返回一行销售数据,否则FULL JOIN时会因重复行产生笛卡尔积,导致多余结果。示例正确CTE结构:

WITH orders_cy AS (
    SELECT 
        p.ProductID,
        SUM(sod.OrderQty) AS FQSalesCY
    FROM SalesLT.SalesOrderDetail sod
    JOIN SalesLT.Product p ON sod.ProductID = p.ProductID
    JOIN SalesLT.ProductCategory pc ON p.ProductCategoryID = pc.ProductCategoryID
    WHERE pc.ProductCategoryID = 5
        -- 替换为实际当前季度的日期过滤,比如2024年Q1:
        AND YEAR(sod.ModifiedDate) = 2024 
        AND DATEPART(QUARTER, sod.ModifiedDate) = 1
    GROUP BY p.ProductID
),
orders_ly AS (
    SELECT 
        p.ProductID,
        SUM(sod.OrderQty) AS FQSalesLY
    FROM SalesLT.SalesOrderDetail sod
    JOIN SalesLT.Product p ON sod.ProductID = p.ProductID
    JOIN SalesLT.ProductCategory pc ON p.ProductCategoryID = pc.ProductCategoryID
    WHERE pc.ProductCategoryID = 5
        -- 对应去年同季度,比如2023年Q1:
        AND YEAR(sod.ModifiedDate) = 2023
        AND DATEPART(QUARTER, sod.ModifiedDate) = 1
    GROUP BY p.ProductID
)

2. 修正FULL JOIN关联逻辑

必须以ProductID作为唯一关联键,同时用COALESCE和ISNULL处理单侧无数据的情况,避免NULL干扰,且不要额外加聚合(否则会出现多余总计行):

SELECT 
    COALESCE(cy.ProductID, ly.ProductID) AS ProductID,
    ISNULL(cy.FQSalesCY, 0) AS FQSalesCY,
    ISNULL(ly.FQSalesLY, 0) AS FQSalesLY
FROM orders_cy cy
FULL JOIN orders_ly ly ON cy.ProductID = ly.ProductID
ORDER BY ProductID;

3. 验证日期过滤准确性

FQSalesLY无预期值,大概率是去年同季度的日期范围写错了。比如当前是2024年Q2,去年Q2必须是2023年4-6月,不要用YEAR(GETDATE())-1但季度不匹配的情况(比如当前是12月Q4,去年Q4是去年10-12月,要确保DATEPART(QUARTER)一致)。

二、快速格式化表格的方法

  • Excel转Markdown:把SQL查询结果复制到Excel,选中数据(含表头),在旁边列用公式生成Markdown格式行:
    比如第一列是A1,第二列B1,第三列C1,在D1输入:="|"&A1&"|"&B1&"|"&C1&"|",下拉填充后复制D列内容,再插入表头分隔线|---|---|---|即可。
  • 编辑器一键格式化:用VS Code的「Markdown All in One」插件,选中带表头的表格数据,按Ctrl+Shift+P输入「Markdown: Format Table」即可自动生成规范的Markdown表格;Notion中直接粘贴表格数据,自动识别后可导出为Markdown格式。
  • SQL工具直接复制:SSMS中选择「Results to Grid」,查询结果右键选「Copy with Headers」,粘贴到支持Markdown的编辑器(如Obsidian、VS Code),多数编辑器会自动转换为Markdown表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:44:49