久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

TSQL:我如何檢測和插入丟失的記錄

TSQL: How do i detect and insert missing records(TSQL:我如何檢測和插入丟失的記錄)
本文介紹了TSQL:我如何檢測和插入丟失的記錄的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有下面的 T-SQL 表.

I have T-SQL Table below.

 ID   Cost    MaxCost
 -------------------------------
 2    200     300
 3    400     1000
 6    20      100

上表必須有 10 行 ID 為 1 到 10.所以它缺少 7 行.如何插入具有正確 ID 的缺失行.成本&缺失行的 maxcost 將為零.我是否需要創(chuàng)建一個包含 1 到 10 個數(shù)字的臨時表?

The above table must have 10 rows with IDs 1 to 10. So its missing 7 rows. How do i insert missing rows with proper ID. The cost & maxcost for missing rows will be zero. Do i need to create a temp table that holds 1 to 10 numbers?

推薦答案

不需要臨時表,簡單的tally派生表和LEFT OUTER JOIN就足夠了:

No need for temp table, simple tally derived table and LEFT OUTER JOIN are sufficient:

CREATE TABLE #tab(ID INT, Cost INT, MaxCost INT);

INSERT INTO #tab(ID, Cost, MaxCost)
VALUES (2, 200,300),(3, 400, 1000) ,(6, 20, 100);

DECLARE @range_start INT = 1
       ,@range_end INT = 10;

;WITH tally AS
(
  SELECT TOP 1000 r = ROW_NUMBER() OVER (ORDER BY name)
  FROM master..spt_values
)
INSERT INTO #tab(id, Cost, MaxCost)
SELECT t.r, 0, 0
FROM tally t
LEFT JOIN #tab c
  ON t.r = c.ID
WHERE t.r BETWEEN @range_start AND @range_end
  AND c.ID IS NULL;

SELECT *
FROM #tab
ORDER BY ID;

LiveDemo

Tally 表只是數(shù)字表.有很多方法可以使用 子查詢:

Tally table is simply number table. There are many ways to achieve it with subquery:

  • 遞歸 cte
  • ROW_NUMBER() 來自包含許多值的系統(tǒng)表(此處使用)
  • UNION ALLCROSS JOIN
  • VALUES(...)
  • 使用 OPENJSON (SQL Server 2016+)
  • ...
  • recursive cte
  • ROW_NUMBER() from system table that holds many values (used here)
  • UNION ALL and CROSS JOIN
  • VALUES(...)
  • using OPENJSON (SQL Server 2016+)
  • ...

TOP 1000 將僅生成 1000 條記錄,如果您知道需要更多記錄可以使用:

The TOP 1000 will generate only 1000 records if you know that you need more you can use:

SELECT TOP 1000000 r = ROW_NUMBER() OVER (ORDER BY (SELECT 1))
FROM master..spt_values c
CROSS JOIN master..spt_values c2;

這篇關(guān)于TSQL:我如何檢測和插入丟失的記錄的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉(zhuǎn)換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創(chuàng)建視圖?)
Create calculated value based on calculated value inside previous row(根據(jù)前一行內(nèi)的計算值創(chuàng)建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發(fā)技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉(zhuǎn)換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 99精品一区二区三区 | 午夜影院在线观看视频 | 久久国产综合 | 国产欧美日韩综合精品一 | 亚洲精品成人av | 久久久久久久久久久高潮一区二区 | 欧美日韩在线视频一区 | 国产精品免费看 | 国产精品观看 | 色视频免费| 欧美 日韩 国产 成人 在线 91 | 网络毛片 | 欧美二区三区 | 夜夜艹 | 在线资源视频 | 超碰在线人人 | 91手机精品视频 | h视频免费在线观看 | 国产精品欧美一区二区 | 亚洲免费人成在线视频观看 | 精品国产乱码久久久久久久久 | 日韩精品一区在线 | 91精品一区二区三区久久久久久 | 国内自拍视频在线观看 | 一级毛片色一级 | 久久久久国产精品 | 二区三区视频 | 亚洲欧美一区二区三区在线 | 国产午夜视频 | 欧美aaaaa| 99久久久国产精品免费消防器 | 精品无码久久久久久国产 | 一级欧美 | 亚洲国产高清高潮精品美女 | 久久出精品 | 久久免费高清视频 | 国产性色视频 | 久久99这里只有精品 | 夜夜夜久久久 | 国产精品一区二区久久精品爱微奶 | 亚洲精品二区 |