2017-10-13 11 views
-1

データベースに順番に格納されている番号がテキストとして格納され、先行する0が含まれています。SQL Server - 番号に先行するゼロが含まれている順序で不足している番号を見つけよう

Numbers 
------- 
001 
002 
003 
004 
006 
007 
010 
011 
------- 

クエリは、次のような結果に

Missing 
------- 
005 
008 
009 
------- 

感謝を見つける必要があります。

+0

数字の範囲はどのくらいですか? 100を超える数値はどのように格納されますか? –

+0

100を超える数字は100,101などに保存され、最大数は9999です – sourabhgk

+0

検索エンジンに質問のタイトルを入れてみましたか? – qxg

答えて

2

あなたが必要とするのは、番号表のシーケンスです(すでに多くの実装がすでにあります)。次にLEFT JOINを使用してください。以下の照会を参照してください。seqは、数字形式のシーケンスで、1〜9999はintです。

;with seq as 
(
select top 9999 row_number() over(order by t1.number) as N 
from master..spt_values t1 
     cross join master..spt_values t2 

) 

SELECT RIGHT('000'+CAST(s.n AS VARCHAR(3)),3) as MissingNumbers 
from seq s 
left join yourtable t on s.n = cast(t.Number as int) 
where t.number is null 
関連する問題