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

SQL Server中如何将两个独立查询结果合并为一张表?

合并两个查询结果的SQL语句

你可以将两个查询作为子查询,通过Store字段进行内连接(INNER JOIN),因为两个结果集中的Store是一一对应的。最终的SQL语句如下:

SELECT 
    sales.Store,
    sales.Type,
    sales.Size,
    sales.tot_sales,
    sales.hol_sales,
    sales.non_hol_sales,
    features.avg_unempl,
    features.avg_CPI,
    features.avg_temp
FROM
    (
        -- 第二个查询:销售数据
        SELECT  
            tra.Store, 
            sto.Type, 
            sto.Size,
            ROUND(SUM(CASE WHEN IsHoliday IN (0,1) THEN Weekly_Sales END),2) AS tot_sales,
            ROUND(SUM(CASE WHEN IsHoliday = 1 THEN Weekly_Sales END),2) AS hol_sales,
            ROUND(SUM(CASE WHEN IsHoliday = 0 THEN Weekly_Sales END),2) AS non_hol_sales
        FROM PortfolioProjects..train tra
        JOIN PortfolioProjects..stores sto ON tra.Store = sto.Store
        GROUP BY tra.Store, sto.Size, sto.Type
    ) AS sales
INNER JOIN
    (
        -- 第一个查询:特征平均值
        SELECT 
            Store, 
            ROUND(AVG(Unemployment),2) AS avg_unempl, 
            ROUND(AVG(CPI),2) AS avg_CPI, 
            ROUND(AVG(Temperature),2) AS avg_temp
        FROM PortfolioProjects..features
        GROUP BY Store
    ) AS features
ON sales.Store = features.Store
ORDER BY sales.Store;

说明:

  • 把两个独立查询分别放在括号里作为子查询并命名(sales和features),方便后续连接引用。
  • 使用INNER JOIN确保只保留两个子查询中都存在的Store记录(你的案例中所有Store都匹配,结果会包含全部6条)。
  • 将第二个查询里的CASE WHEN IsHoliday = 1 OR IsHoliday = 0简化成IsHoliday IN (0,1),逻辑等价且更简洁。
  • 最后统一用ORDER BY排序,避免子查询里的排序影响性能。

执行这个语句后,你会得到包含所有字段的合并表,字段顺序可根据需求自行调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:46