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

基于Id分组实现LineGroupBy值的动态SQL交集查询

动态实现多Id分组的LineGroupBy交集查询

需求说明

基于Id列分组,对LineGroupBy的值做所有组的交集运算,无需硬编码指定具体Id值。示例数据中,Id=1、5、8对应的LineGroupBy集合无共同元素,最终结果应为空集。

方法一:纯SQL统计法(推荐)

通过统计每个LineGroupBy在不同Id分组中的出现次数,筛选出在所有分组中都存在的LineGroupBy:

SELECT LineGroupBy
FROM (
    -- 先去重,确保同一个Id下的LineGroupBy只算一次
    SELECT DISTINCT LineGroupBy, Id
    FROM #temp
) t
GROUP BY LineGroupBy
-- 出现次数等于总分组数(即不同Id的数量),说明该值在所有组中都存在
HAVING COUNT(*) = (SELECT COUNT(DISTINCT Id) FROM #temp)

如果没有交集,此查询返回空结果,符合预期。

方法二:动态SQL拼接INTERSECT语句

自动生成与静态查询逻辑一致的SQL语句,无需手动指定Id:

DECLARE @sql NVARCHAR(MAX)

-- 拼接所有Id对应的查询语句,用INTERSECT连接
SELECT @sql = STRING_AGG(
    CONCAT('SELECT LineGroupBy FROM #temp WHERE Id = ', Id),
    ' INTERSECT '
)
FROM (SELECT DISTINCT Id FROM #temp) t

-- 执行动态生成的SQL
EXEC sp_executesql @sql

此方法完全复刻静态查询的INTERSECT逻辑,适合需要严格匹配原查询行为的场景。

示例验证

用提供的测试数据执行上述任一方法,都会返回空结果,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:32:04