最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL Server臨時表合并與數量匯總的實現方法

 更新時間:2025年08月31日 15:50:50   作者:nbsaas-boot  
不同業(yè)務邏輯在中間處理過程中,會產生多個結構類似的臨時表,如果希望將這些結果進行合并,并且按相同 id 進行數量匯總,SQL Server 提供了多種實現方式,本文將系統(tǒng)介紹幾種常見做法,并給出適用場景,需要的朋友可以參考下

引言

在實際開發(fā)中,我們經常會遇到這樣的需求:
不同業(yè)務邏輯在中間處理過程中,會產生多個結構類似的臨時表(Temporary Table),例如兩個統(tǒng)計結果表,字段結構相同,但數據來源不同。如果希望將這些結果進行合并,并且按相同 id 進行數量匯總,SQL Server 提供了多種實現方式。本文將系統(tǒng)介紹幾種常見做法,并給出適用場景。

1. 場景舉例

假設我們有兩個臨時表,分別存儲來自不同渠道的訂單統(tǒng)計:

CREATE TABLE #tmp1 (id INT, num INT);
CREATE TABLE #tmp2 (id INT, num INT);
 
INSERT INTO #tmp1 VALUES (1, 10), (2, 20), (3, 30);
INSERT INTO #tmp2 VALUES (2, 5), (3, 15), (4, 25);

需求:

  • 將兩個臨時表合并;
  • 相同 idnum 相加;
  • 保留所有 id。

2. 方法一:UNION ALL + GROUP BY(推薦)

這是最簡潔、性能較優(yōu)的方式,尤其適用于需要合并多個相同結構表的情況。

SELECT id, SUM(num) AS total_num
FROM (
    SELECT id, num FROM #tmp1
    UNION ALL
    SELECT id, num FROM #tmp2
) t
GROUP BY id;

結果:

id | total_num
1  | 10
2  | 25
3  | 45
4  | 25

特點

  • 簡潔、易讀;
  • 可擴展性強:如果有多個臨時表,只需繼續(xù) UNION ALL;
  • 適用場景:表結構完全一致。

3. 方法二:FULL OUTER JOIN

如果你需要清晰地看到來自不同表的數據來源,或者兩個表字段不完全一致,可以使用 FULL OUTER JOIN。

SELECT 
    COALESCE(t1.id, t2.id) AS id,
    ISNULL(t1.num, 0) + ISNULL(t2.num, 0) AS total_num
FROM #tmp1 t1
FULL OUTER JOIN #tmp2 t2
    ON t1.id = t2.id;

結果與方法一相同:

id | total_num
1  | 10
2  | 25
3  | 45
4  | 25

特點

  • 可以保留兩個表的來源數據;
  • 寫法比 UNION ALL 冗長;
  • 適用場景:當需要對不同表進行逐字段對齊處理時更合適。

4. 方法三:合并多個臨時表(通用模板)

在實際項目中,我們可能會有三個以上的臨時表,例如 #tmp1、#tmp2、#tmp3。
此時推薦使用 UNION ALL + GROUP BY

SELECT id, SUM(num) AS total_num
FROM (
    SELECT id, num FROM #tmp1
    UNION ALL
    SELECT id, num FROM #tmp2
    UNION ALL
    SELECT id, num FROM #tmp3
) t
GROUP BY id;

這種方式可以輕松擴展到 N 個臨時表。

5. 性能對比與優(yōu)化建議

UNION ALL + GROUP BY

  • 更適合大數據量合并,SQL Server 優(yōu)化器對這種模式有較好支持。
  • 如果合并的表數量多,可以考慮將其放入臨時表再做聚合。

FULL OUTER JOIN

  • 更直觀,但如果表數量超過 2 個,寫法復雜度會急劇上升。
  • 性能上通常比 UNION ALL 差。

建議:如果只是簡單數量合并,盡量使用 UNION ALL + GROUP BY。
如果需要保留不同來源表的明細差異,可以使用 FULL OUTER JOIN

6. 總結

在 SQL Server 中合并兩個或多個臨時表并對相同 id 進行數量匯總,有兩種主要思路:

  • UNION ALL + GROUP BY:簡潔高效,適合多表合并,推薦使用。
  • FULL OUTER JOIN:邏輯清晰,適合兩個表逐字段對齊場景。

在實際業(yè)務開發(fā)中,應根據臨時表數量和需求靈活選擇方案。對于多來源的統(tǒng)計計算,建議統(tǒng)一采用 UNION ALL + GROUP BY,既保證了性能,也便于擴展。

以上就是SQL Server臨時表合并與數量匯總的實現方法的詳細內容,更多關于SQL Server臨時表合并與數量匯總的資料請關注腳本之家其它相關文章!

相關文章

  • Sql Server的一些知識點定義總結

    Sql Server的一些知識點定義總結

    這篇文章主要給大家總結介紹了關于Sql Server的一些知識點定義文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • 親自教你使用?ChatGPT?編寫?SQL?JOIN?查詢示例

    親自教你使用?ChatGPT?編寫?SQL?JOIN?查詢示例

    這篇文章主要介紹了使用ChatGPT編寫SQL?JOIN查詢,作為一種語言模型,ChatGPT 可以就如何構建復雜的 SQL 查詢和 JOIN 提供指導和建議,但它不能直接訪問 SQL 數據庫,它可以幫助您了解語法、最佳實踐和有關如何構建查詢以高效執(zhí)行的一般指導,需要的朋友可以參考下
    2023-02-02
  • SQL?Server設置多個端口號的操作步驟

    SQL?Server設置多個端口號的操作步驟

    SQL?Server使用的默認端口號是TCP端口1433,這是為了連接到?Microsoft?SQL?Server?實例的標準網絡端口,如果你正在設置?SQL?Server?或者嘗試從其他應用程序連接到它,所以本文給大家介紹了SQL?Server如何設置多個端口號,需要的朋友可以參考下
    2024-07-07
  • 深入學習SQL Server聚合函數算法優(yōu)化技巧

    深入學習SQL Server聚合函數算法優(yōu)化技巧

    這篇文章主要深入學習SQL Server聚合函數算法優(yōu)化技巧,感興趣的小伙伴們可以參考一下
    2015-12-12
  • SQLServer中生成雪花ID(Snowflake?ID)的實現方法

    SQLServer中生成雪花ID(Snowflake?ID)的實現方法

    這篇文章主要介紹了在SQL?Server中生成雪花ID(Snowflake?ID)的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-08-08
  • SQL Server 數據庫優(yōu)化

    SQL Server 數據庫優(yōu)化

    設計1個應用系統(tǒng)似乎并不難,但是要想使系統(tǒng)達到最優(yōu)化的性能并不是一件容易的事。
    2009-07-07
  • SQL?將一列拆分成多列的實現示例

    SQL?將一列拆分成多列的實現示例

    在SQL中,有時需要將一列數據按照特定的符號進行分割,分成多個列,本文就來介紹一下SQL?將一列拆分成多列的實現示例,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • SQL?Server數據庫中已存在名為'student'對象的解決辦法

    SQL?Server數據庫中已存在名為'student'對象的解決辦法

    這篇文章主要給大家介紹了關于SQL?Server數據庫中已存在名為'student'對象的解決辦法,解決方法很簡單,并且也很實用,不止有這一個用處,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 用SQL語句實現隨機查詢數據并不顯示錯誤數據的方法

    用SQL語句實現隨機查詢數據并不顯示錯誤數據的方法

    用SQL語句實現隨機查詢數據并不顯示錯誤數據的方法...
    2007-11-11
  • SqlServer 英文單詞全字匹配詳解及實現代碼

    SqlServer 英文單詞全字匹配詳解及實現代碼

    這篇文章主要介紹了SqlServer 英文單詞全字匹配的相關資料,并附實例,有需要的小伙伴可以參考下
    2016-09-09

最新評論

南康市| 土默特左旗| 南通市| 庆阳市| 砀山县| 阳东县| 尼木县| 平南县| 皋兰县| 兴海县| 阿克苏市| 佛教| 格尔木市| 洛南县| 富平县| 竹山县| 湖南省| 贵德县| 武汉市| 武陟县| 滨州市| 偏关县| 宜君县| 内乡县| 南汇区| 交口县| 垫江县| 家居| 潮州市| 余干县| 澎湖县| 延川县| 保德县| 淅川县| 客服| 洞头县| 丹巴县| 呼伦贝尔市| 青川县| 永德县| 双鸭山市|