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

SQL Server按日期范围关联EMPLOYEE与SALES表统计入职30天销量

错误原因

你第二次查询报错是因为普通聚合子查询的作用域仅限于自身内部,无法直接访问外层EMPLOYEE表的HIRE_DATE字段,因此筛选条件中引用该字段时会触发未识别字段的报错。

正确写法(两种方案均可,第一种更简洁,完全匹配你期望的输出格式)

方案1:标量子查询(无符合销量时自动返回NULL,和预期结果一致)

SELECT 
    e.*,
    (
        SELECT COUNT(*)
        FROM SALES s
        WHERE s.EMPID = e.EMPID
        AND DATEDIFF(DAY, e.HIRE_DATE, s.SALE_DATE) < 30
    ) AS SALES_30_DAYS
FROM EMPLOYEE e

方案2:LEFT JOIN 关联筛选

如果你更偏好JOIN写法,也可以将时间筛选条件放到关联逻辑中实现:

SELECT 
    e.EMPID,
    e.EMPNAME,
    e.HIRE_DATE,
    NULLIF(COUNT(s.EMPID), 0) AS SALES_30_DAYS
FROM EMPLOYEE e
LEFT JOIN SALES s 
    ON e.EMPID = s.EMPID
    AND DATEDIFF(DAY, e.HIRE_DATE, s.SALE_DATE) < 30
GROUP BY e.EMPID, e.EMPNAME, e.HIRE_DATE

两种写法执行结果完全一致,都可以输出你预期的结果:没有入职30天内销量的员工,SALES_30_DAYS字段返回NULL。

内容的提问来源于stack exchange,提问作者Depth of Field

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:57:01