追記10/2 末尾に書き足し
1. 法人番号データを集計してみたい
1-1. 何をしたいのか
国税庁が公開している「法人番号データ」には、
- 企業の商号
- 法人番号指定年月日(≒会社が起業・登録された日)
- 登記記録の閉鎖等年月日(≒会社が解散・消滅または吸収合併した日)
- 所在地
など様々な情報が含まれています。
「このデータを集計・分析してみたら、いろいろな面白い事実がわかるのではないか?」と考え、実際にデータベースを作成して検証してみることにしました。
1-2. 準備
分析を進めるにあたり、以下の準備を行います。
a) データベースの準備
大規模なテキストデータを高速に処理・集計するためにSQLServerを用意します。
b) 法人番号データのダウンロード
国税庁の「法人番号公表サイト」ダウンロードページからUnicodeの全データのCSVファイルをダウンロードします。
上記のリンク先で全国と書いてある下のリンク「zip nnnMB」(nnnには数値が入ります)をクリックしてダウンロードしてください。
2. SQL ServerでDBを作成
2-1. テーブルを作成
法人番号データの基本構造に合わせてテーブルを作成します。
SQLServerに次のスクリプトでテーブルを作成してください。
-- 法人番号テーブルの作成
CREATE TABLE [dbo].[T法人番号]
(
[一連番号] BIGINT NOT NULL
, [法人番号] CHAR(13) COLLATE Japanese_CI_AS NULL
, [処理区分] INT NULL
, [訂正区分] INT NULL
, [更新年月日] DATE NULL
, [変更年月日] DATE NULL
, [商号又は名称] NVARCHAR(150) COLLATE Japanese_CI_AS NULL
, [商号又は名称イメージID] CHAR(8) COLLATE Japanese_CI_AS NULL
, [法人種別] INT NULL
, [国内所在地_都道府県] NVARCHAR(10) COLLATE Japanese_CI_AS NULL
, [国内所在地_市区町村] NVARCHAR(20) COLLATE Japanese_CI_AS NULL
, [国内所在地_丁目番地等] NVARCHAR(300) COLLATE Japanese_CI_AS NULL
, [国内所在地イメージID] CHAR(8) COLLATE Japanese_CI_AS NULL
, [都道府県コード] CHAR(2) COLLATE Japanese_CI_AS NULL
, [市区町村コード] CHAR(3) COLLATE Japanese_CI_AS NULL
, [郵便番号] CHAR(7) COLLATE Japanese_CI_AS NULL
, [国外所在地] NVARCHAR(300) COLLATE Japanese_CI_AS NULL
, [国外所在地イメージID] CHAR(8) COLLATE Japanese_CI_AS NULL
, [登記記録の閉鎖等年月日] DATE NULL
, [登記記録の閉鎖等の事由] INT NULL
, [承継先法人番号] CHAR(13) COLLATE Japanese_CI_AS NULL
, [変更事由の詳細] NVARCHAR(500) COLLATE Japanese_CI_AS NULL
, [法人番号指定年月日] DATE NULL
, [最新履歴] INT NULL
, [商号又は名称_英語表記] NVARCHAR(300) COLLATE Japanese_CI_AS NULL
, [国内所在地_都道府県_英語表記] NVARCHAR(9) COLLATE Japanese_CI_AS NULL
, [国内所在地_市区町村丁目番地等_英語表記] NVARCHAR(600) COLLATE Japanese_CI_AS NULL
, [国外所在地_英語表記] NVARCHAR(600) COLLATE Japanese_CI_AS NULL
, [フリガナ] NVARCHAR(500) COLLATE Japanese_CI_AS NULL
, [検索対象外] INT NULL
, CONSTRAINT [PK__T法人番号] PRIMARY KEY ([一連番号] ASC)
);
GO
気になる方は以下の設定も行ってください。
定数テーブルの定義など
CREATE TABLE [dbo].[C処理区分]
(
[処理区分CD] INT NOT NULL
, [処理区分_項目値] NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
, [処理区分_摘要] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
, CONSTRAINT [PK_C処理区分] PRIMARY KEY ([処理区分CD] ASC)
);
GO
CREATE TABLE [dbo].[C訂正区分]
(
[訂正区分CD] INT NOT NULL
, [訂正区分_項目値] NVARCHAR(50) COLLATE Japanese_CI_AS NOT NULL
, [訂正区分_摘要] NVARCHAR(200) COLLATE Japanese_CI_AS NULL
, CONSTRAINT [PK_C訂正区分] PRIMARY KEY ([訂正区分CD] ASC)
);
GO
CREATE TABLE [dbo].[C法人種別]
(
[法人種別CD] INT NOT NULL
, [法人種別_項目値] NVARCHAR(50) COLLATE Japanese_CI_AS NOT NULL
, [法人種別_摘要] NVARCHAR(200) COLLATE Japanese_CI_AS NULL
, CONSTRAINT [PK_C法人種別] PRIMARY KEY ([法人種別CD] ASC)
);
GO
CREATE TABLE [dbo].[C登記記録の閉鎖等の事由]
(
[登記記録の閉鎖等の事由CD] INT NOT NULL
, [登記記録の閉鎖等の事由_項目値] NVARCHAR(50) COLLATE Japanese_CI_AS NOT NULL
, [登記記録の閉鎖等の事由_摘要] NVARCHAR(200) COLLATE Japanese_CI_AS NULL
, CONSTRAINT [PK_C登記記録の閉鎖等の事由] PRIMARY KEY ([登記記録の閉鎖等の事由CD] ASC)
);
GO
CREATE TABLE [dbo].[C最新履歴]
(
[最新履歴CD] INT NOT NULL PRIMARY KEY
, [最新履歴_項目値] NVARCHAR(50) COLLATE Japanese_CI_AS NOT NULL
, [最新履歴_摘要] NVARCHAR(200) COLLATE Japanese_CI_AS NULL
, CONSTRAINT [PK_C最新履歴] PRIMARY KEY ([最新履歴CD] ASC)
);
GO
CREATE TABLE [dbo].[C検索対象外]
(
[検索対象外CD] INT NOT NULL
, [検索対象外_項目値] NVARCHAR(50) COLLATE Japanese_CI_AS NOT NULL
, [検索対象外_摘要] NVARCHAR(200) COLLATE Japanese_CI_AS NULL
, CONSTRAINT [PK_C検索対象] PRIMARY KEY ([検索対象外CD] ASC)
);
GO
ALTER TABLE [dbo].[T法人番号] WITH CHECK ADD CONSTRAINT [FK_T法人番号_C処理区分] FOREIGN KEY([処理区分]) REFERENCES [dbo].[C処理区分] ([処理区分CD])
ALTER TABLE [dbo].[T法人番号] CHECK CONSTRAINT [FK_T法人番号_C処理区分]
ALTER TABLE [dbo].[T法人番号] WITH CHECK ADD CONSTRAINT [FK_T法人番号_C最新履歴] FOREIGN KEY([最新履歴]) REFERENCES [dbo].[C最新履歴] ([最新履歴CD])
ALTER TABLE [dbo].[T法人番号] CHECK CONSTRAINT [FK_T法人番号_C最新履歴]
ALTER TABLE [dbo].[T法人番号] WITH CHECK ADD CONSTRAINT [FK_T法人番号_C検索対象外] FOREIGN KEY([検索対象外]) REFERENCES [dbo].[C検索対象外] ([検索対象外CD])
ALTER TABLE [dbo].[T法人番号] CHECK CONSTRAINT [FK_T法人番号_C検索対象外]
ALTER TABLE [dbo].[T法人番号] WITH CHECK ADD CONSTRAINT [FK_T法人番号_C法人種別] FOREIGN KEY([法人種別]) REFERENCES [dbo].[C法人種別] ([法人種別CD])
ALTER TABLE [dbo].[T法人番号] CHECK CONSTRAINT [FK_T法人番号_C法人種別]
ALTER TABLE [dbo].[T法人番号] WITH CHECK ADD CONSTRAINT [FK_T法人番号_C登記記録の閉鎖等の事由] FOREIGN KEY([登記記録の閉鎖等の事由]) REFERENCES [dbo].[C登記記録の閉鎖等の事由] ([登記記録の閉鎖等の事由CD])
ALTER TABLE [dbo].[T法人番号] CHECK CONSTRAINT [FK_T法人番号_C登記記録の閉鎖等の事由]
ALTER TABLE [dbo].[T法人番号] WITH CHECK ADD CONSTRAINT [FK_T法人番号_C訂正区分] FOREIGN KEY([訂正区分]) REFERENCES [dbo].[C訂正区分] ([訂正区分CD])
ALTER TABLE [dbo].[T法人番号] CHECK CONSTRAINT [FK_T法人番号_C訂正区分]
GO
insert into dbo.C処理区分
(処理区分CD,処理区分_項目値,処理区分_摘要)
values
(1,'新規','新たに法人番号が指定されたことを表す情報であることを意味する。')
,(11,'商号又は名称の変更','商号又は名称が変更されたことを表す情報であることを意味する。')
,(12,'国内所在地の変更','国内における本店又は主たる事務所の所在地の変更、国内に本店又は主たる事務所がない法人等の場合は、国内における事務所又は営業所の所在地の変更又は、市区町村合併等により住居表示が変更されたことを表す情報であることを意味する。')
,(13,'国外所在地の変更','国外における本店又は主たる事務所の所在地が変更されたことを表す情報であることを意味する。')
,(21,'登記記録の閉鎖等','清算の結了、合併による解散などの事由により登記記録の閉鎖等の事由が生じたことを表す情報であることを意味する。')
,(22,'登記記録の復活等','清算の結了、合併による解散などの事由により登記記録の閉鎖等が生じた後、清算結了等の手続に瑕疵があり、清算結了が無効になるなどの事由により登記記録が復活等したことを表す情報であることを意味する。')
,(71,'吸収合併','設立登記法人が、吸収合併を行ったことを表す情報であることを意味する。')
,(72,'吸収合併無効','吸収合併後存続した設立登記法人の吸収合併について無効判決が確定したことを表す情報であることを意味する。')
,(81,'商号の登記の抹消','設立登記法人について商号の登記が抹消されたことを表す情報であることを意味する。')
,(99,'削除','法人番号の重複指定等の理由により法人番号の指定を撤回したこと及び公表に同意した人格のない社団等の代表者又は管理人が、公表の同意を撤回したことを表す情報であることを意味する。')
;
insert into dbo.C訂正区分
(訂正区分CD,訂正区分_項目値,訂正区分_摘要)
values
(0,'訂正以外','訂正したデータ(訂正区分が「1」)以外の場合、当該訂正区分に訂正以外「0」を設定する。')
,(1,'訂正','訂正したデータの場合、当該訂正区分に訂正「1」を設定する。')
;
insert into dbo.C法人種別
(法人種別CD,法人種別_項目値,法人種別_摘要)
values
(101,'国の機関','行政機関、裁判所及び国会の機関に係る情報であることを意味する。')
,(201,'地方公共団体','地方自治法第1条の3において定義されている普通地方公共団体及び特別地方公共団体に係る情報であることを意味する。')
,(301,'株式会社','株式会社の情報であることを意味する。')
,(302,'有限会社','特例有限会社の情報であることを意味する。')
,(303,'合名会社','合名会社の情報であることを意味する。')
,(304,'合資会社','合資会社の情報であることを意味する。')
,(305,'合同会社','合同会社の情報であることを意味する。')
,(399,'その他の設立登記法人','株式会社(301)、有限会社(302)、合名会社(303)、合資会社(304)及び合同会社(305)以外の法令の規定により設立の登記をすることによって成立する法人の情報であることを意味する。')
,(401,'外国会社等','外国、外国の行政区画及び外国会社並びに法律又は条約の規定により認許された外国法人の情報であることを意味する。')
,(499,'その他','上記以外の人格のない社団等及び日本の法律の規定により成立し、設立の登記を行わない法人の情報であることを意味する。')
;
insert into dbo.C登記記録の閉鎖等の事由
(登記記録の閉鎖等の事由CD,登記記録の閉鎖等の事由_項目値,登記記録の閉鎖等の事由_摘要)
values
(1,'清算の結了等','設立登記法人について、清算の結了等により登記記録が閉鎖された事を意味する。')
,(11,'合併による解散等','設立登記法人について、合併による解散等により登記記録が閉鎖された事を意味する。')
,(21,'登記官による閉鎖','設立登記法人について、商業登記規則第81条により登記記録の閉鎖された事を意味する。')
,(31,'その他の清算の結了等','設立登記法人以外について、清算の結了等に類する事由が生じた場合に表示する。')
;
insert into dbo.C最新履歴
(最新履歴CD,最新履歴_項目値,最新履歴_摘要)
values
(0,'過去情報','過去の情報であることを意味する。')
,(1,'最新情報','最新の情報であることを意味する。')
;
insert into dbo.C検索対象外
(検索対象外CD,検索対象外_項目値,検索対象外_摘要)
values
(0,'検索対象','検索対象となっている情報であることを意味する。')
,(1,'検索対象外','検索対象から除外した情報であることを意味する。')
;
GO
2-2. BULK INSERTでデータ投入
ダウンロードしたzipファイル(例、00_zenkoku_all_20260831.zip)を展開すると、CSVファイルができますので、そのCSVファイル(例、00_zenkoku_all_20260831.csv)を BULK INSERT コマンドで一括インポートします。
BULK INSERT dbo.T法人番号
FROM 'C:\foo\bar\00_zenkoku_all_20260831.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\r\n',
FIRSTROW = 1,
CODEPAGE = '65001' -- UTF-8
);
実は私は上記のスクリプトとはちょっと異なる手順で取り込んでいます。
なので、スクリプトを正しく実行しても上手くいかない可能性があります。
うまくデータが取り込めないなら、AIと相談してください。
10/2追記
9/30更新のデータを読み込ませるときは次のようにしました。
環境はLinuxのdockerコンテナ版のsqlserverです。
CSVファイルは全国版でUTF-8をダウンロードしました。
BULK INSERT dbo.T法人番号2
FROM '/var/opt/mssql/backups/00_zenkoku_all_20260930.csv'
WITH (
FORMAT='CSV',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0a',
FIRSTROW = 1
-- ,
-- CODEPAGE = '65001' -- UTF-8
);
3. 分析
データが入ったところで、実際にSQLクエリを叩いて調査・分析を行います。
ここで、データの仕様は次のPDFに規定されています。
リソース定義書(PDF)
3-1. まずは記号の意味と状態を確認する
現在のデータの分布状況を確認します。
次のスクリプトを実行してみましょう。
select
count(A.一連番号) as 件数
,A.最新履歴
,C1.最新履歴_項目値
from dbo.T法人番号 A
left outer join dbo.C最新履歴 C1
on A.最新履歴=C1.最新履歴CD
group by
A.最新履歴
,C1.最新履歴_項目値
order by
A.最新履歴
;
| 最新履歴 | 最新履歴_項目値 | 件数 |
|---|---|---|
| 1 | 最新情報 | 5,827,771 |
今回差分ではなく全件のデータを取得したので、すべてのデータが最新情報になっています。
では次に、データの時期についてみてみましょう。
法人番号の制度が2015年10月5日から始まったので、それ以降のデータになっています。
変更年月日と更新年月日は次のように定義されています。
- 変更年月日
事由が発生した日付を表すデータ項目。
○ 処理区分が新規(01)の場合
法人番号が指定された年月日を意味する。
○ 処理区分が新規(01)以外の場合
・ 設立登記法人:処理区分の事由に係る登記年月日を意味する。
・ 設立登記法人以外:処理区分の事由が生じた年月日を意味する。
- 更新年月日
法務省等からデータを受け取り、当庁でデータを更新した日付を表す。
select
count(A.一連番号) as 件数
,datepart(year,A.変更年月日) as 変更年
,datepart(month,A.変更年月日) as 変更月
,min(A.更新年月日) as min更新年月日
,max(A.更新年月日) as max更新年月日
from dbo.T法人番号 A
group by
datepart(year,A.変更年月日)
,datepart(month,A.変更年月日)
order by
datepart(year,A.変更年月日)
,datepart(month,A.変更年月日)
;
select
count(A.一連番号) as 件数
,datediff(year,A.変更年月日,A.更新年月日) as 変更から更新までの期間_年単位
from dbo.T法人番号 A
group by
datediff(year,A.変更年月日,A.更新年月日)
order by
datediff(year,A.変更年月日,A.更新年月日)
;
結果は長いので一部を表示します。
| 件数 | 変更年 | 変更月 | min更新年月日 | max更新年月日 |
|---|---|---|---|---|
| 1 | 2015 | 8 | 2018-06-21 | 2018-06-21 |
| 2,920,304 | 2015 | 10 | 2015-10-26 | 2026-08-31 |
| 13,620 | 2015 | 11 | 2015-11-04 | 2026-08-27 |
| 15,858 | 2015 | 12 | 2015-12-02 | 2026-08-31 |
| 14,631 | 2016 | 1 | 2016-01-05 | 2026-08-31 |
| 36,548 | 2016 | 2 | 2016-02-02 | 2026-08-31 |
| 15,997 | 2016 | 3 | 2016-03-02 | 2026-08-31 |
| 18,415 | 2016 | 4 | 2016-04-04 | 2026-08-31 |
| 13,756 | 2016 | 5 | 2016-05-06 | 2026-08-31 |
| 16,097 | 2016 | 6 | 2016-06-02 | 2026-08-31 |
| 15,478 | 2016 | 7 | 2016-07-04 | 2026-08-31 |
| 14,845 | 2016 | 8 | 2016-08-02 | 2026-08-31 |
| 14,947 | 2016 | 9 | 2016-09-02 | 2026-08-31 |
表全体はこちら
| 件数 | 変更年 | 変更月 | min更新年月日 | max更新年月日 |
|---|---|---|---|---|
| 1 | 2015 | 8 | 2018-06-21 | 2018-06-21 |
| 2,920,304 | 2015 | 10 | 2015-10-26 | 2026-08-31 |
| 13,620 | 2015 | 11 | 2015-11-04 | 2026-08-27 |
| 15,858 | 2015 | 12 | 2015-12-02 | 2026-08-31 |
| 14,631 | 2016 | 1 | 2016-01-05 | 2026-08-31 |
| 36,548 | 2016 | 2 | 2016-02-02 | 2026-08-31 |
| 15,997 | 2016 | 3 | 2016-03-02 | 2026-08-31 |
| 18,415 | 2016 | 4 | 2016-04-04 | 2026-08-31 |
| 13,756 | 2016 | 5 | 2016-05-06 | 2026-08-31 |
| 16,097 | 2016 | 6 | 2016-06-02 | 2026-08-31 |
| 15,478 | 2016 | 7 | 2016-07-04 | 2026-08-31 |
| 14,845 | 2016 | 8 | 2016-08-02 | 2026-08-31 |
| 14,947 | 2016 | 9 | 2016-09-02 | 2026-08-31 |
| 15,350 | 2016 | 10 | 2016-10-04 | 2026-08-31 |
| 14,959 | 2016 | 11 | 2016-11-02 | 2026-08-31 |
| 16,460 | 2016 | 12 | 2016-12-02 | 2026-08-31 |
| 23,931 | 2017 | 1 | 2017-01-05 | 2026-08-31 |
| 14,554 | 2017 | 2 | 2017-02-02 | 2026-08-31 |
| 16,406 | 2017 | 3 | 2017-03-02 | 2026-08-31 |
| 18,377 | 2017 | 4 | 2017-04-04 | 2026-08-31 |
| 15,400 | 2017 | 5 | 2017-05-02 | 2026-08-28 |
| 17,062 | 2017 | 6 | 2017-06-02 | 2026-08-31 |
| 15,896 | 2017 | 7 | 2017-07-04 | 2026-08-28 |
| 15,366 | 2017 | 8 | 2017-08-02 | 2026-08-31 |
| 15,357 | 2017 | 9 | 2017-09-04 | 2026-08-31 |
| 16,335 | 2017 | 10 | 2017-10-03 | 2026-08-31 |
| 14,627 | 2017 | 11 | 2017-11-02 | 2026-08-31 |
| 16,467 | 2017 | 12 | 2017-12-04 | 2026-08-31 |
| 26,620 | 2018 | 1 | 2018-01-05 | 2026-08-31 |
| 13,578 | 2018 | 2 | 2018-02-02 | 2026-08-31 |
| 15,266 | 2018 | 3 | 2018-03-02 | 2026-08-27 |
| 20,202 | 2018 | 4 | 2018-04-03 | 2026-08-31 |
| 15,872 | 2018 | 5 | 2018-05-02 | 2026-08-25 |
| 16,128 | 2018 | 6 | 2018-06-04 | 2026-08-31 |
| 16,753 | 2018 | 7 | 2018-07-03 | 2026-08-31 |
| 15,863 | 2018 | 8 | 2018-08-02 | 2026-08-27 |
| 14,204 | 2018 | 9 | 2018-09-04 | 2026-08-31 |
| 19,896 | 2018 | 10 | 2018-10-02 | 2026-08-27 |
| 16,283 | 2018 | 11 | 2018-11-02 | 2026-08-24 |
| 16,467 | 2018 | 12 | 2018-12-04 | 2026-08-28 |
| 26,075 | 2019 | 1 | 2019-01-07 | 2026-08-25 |
| 14,235 | 2019 | 2 | 2019-02-04 | 2026-08-28 |
| 15,171 | 2019 | 3 | 2019-03-04 | 2026-08-28 |
| 19,793 | 2019 | 4 | 2019-04-02 | 2026-08-31 |
| 17,477 | 2019 | 5 | 2019-05-08 | 2026-08-27 |
| 16,899 | 2019 | 6 | 2019-06-04 | 2026-08-26 |
| 18,775 | 2019 | 7 | 2019-07-02 | 2026-08-28 |
| 15,242 | 2019 | 8 | 2019-08-02 | 2026-08-26 |
| 15,777 | 2019 | 9 | 2019-09-03 | 2026-08-28 |
| 19,089 | 2019 | 10 | 2019-10-02 | 2026-08-20 |
| 16,855 | 2019 | 11 | 2019-11-05 | 2026-08-28 |
| 17,748 | 2019 | 12 | 2019-12-03 | 2026-08-19 |
| 27,781 | 2020 | 1 | 2020-01-07 | 2026-08-27 |
| 14,625 | 2020 | 2 | 2020-02-03 | 2026-08-31 |
| 17,793 | 2020 | 3 | 2020-03-02 | 2026-08-31 |
| 20,157 | 2020 | 4 | 2020-04-01 | 2026-08-24 |
| 14,124 | 2020 | 5 | 2020-05-01 | 2026-08-28 |
| 18,216 | 2020 | 6 | 2020-06-01 | 2026-08-31 |
| 19,865 | 2020 | 7 | 2020-07-01 | 2026-08-31 |
| 17,239 | 2020 | 8 | 2020-08-03 | 2026-08-31 |
| 18,735 | 2020 | 9 | 2020-09-01 | 2026-08-28 |
| 20,602 | 2020 | 10 | 2020-10-01 | 2026-08-27 |
| 18,049 | 2020 | 11 | 2020-11-02 | 2026-08-28 |
| 19,608 | 2020 | 12 | 2020-12-01 | 2026-08-31 |
| 28,105 | 2021 | 1 | 2021-01-04 | 2026-08-31 |
| 16,660 | 2021 | 2 | 2021-02-01 | 2026-08-31 |
| 20,789 | 2021 | 3 | 2021-03-01 | 2026-08-27 |
| 24,698 | 2021 | 4 | 2021-04-01 | 2026-08-31 |
| 17,032 | 2021 | 5 | 2021-05-06 | 2026-08-31 |
| 21,668 | 2021 | 6 | 2021-06-01 | 2026-08-27 |
| 19,571 | 2021 | 7 | 2021-07-01 | 2026-08-28 |
| 18,601 | 2021 | 8 | 2021-08-02 | 2026-08-31 |
| 19,609 | 2021 | 9 | 2021-09-01 | 2026-08-26 |
| 21,140 | 2021 | 10 | 2021-10-01 | 2026-08-31 |
| 20,269 | 2021 | 11 | 2021-11-01 | 2026-08-31 |
| 19,824 | 2021 | 12 | 2021-12-01 | 2026-08-28 |
| 28,586 | 2022 | 1 | 2022-01-04 | 2026-08-24 |
| 16,983 | 2022 | 2 | 2022-02-01 | 2026-08-27 |
| 20,691 | 2022 | 3 | 2022-03-01 | 2026-08-27 |
| 23,105 | 2022 | 4 | 2022-04-01 | 2026-08-31 |
| 18,322 | 2022 | 5 | 2022-05-02 | 2026-08-26 |
| 22,052 | 2022 | 6 | 2022-06-01 | 2026-08-28 |
| 20,347 | 2022 | 7 | 2022-07-01 | 2026-08-28 |
| 20,467 | 2022 | 8 | 2022-08-01 | 2026-08-31 |
| 19,539 | 2022 | 9 | 2022-09-01 | 2026-08-31 |
| 21,468 | 2022 | 10 | 2022-10-03 | 2026-08-31 |
| 21,213 | 2022 | 11 | 2022-11-01 | 2026-08-26 |
| 20,883 | 2022 | 12 | 2022-12-01 | 2026-08-26 |
| 29,498 | 2023 | 1 | 2023-01-04 | 2026-08-31 |
| 19,031 | 2023 | 2 | 2023-02-01 | 2026-08-28 |
| 23,214 | 2023 | 3 | 2023-03-01 | 2026-08-24 |
| 25,918 | 2023 | 4 | 2023-04-03 | 2026-08-28 |
| 21,949 | 2023 | 5 | 2023-05-01 | 2026-08-31 |
| 24,632 | 2023 | 6 | 2023-06-01 | 2026-08-26 |
| 23,258 | 2023 | 7 | 2023-07-03 | 2026-08-31 |
| 24,274 | 2023 | 8 | 2023-08-01 | 2026-08-31 |
| 23,862 | 2023 | 9 | 2023-09-01 | 2026-08-31 |
| 26,980 | 2023 | 10 | 2023-10-02 | 2026-08-28 |
| 23,423 | 2023 | 11 | 2023-11-01 | 2026-08-24 |
| 24,649 | 2023 | 12 | 2023-12-01 | 2026-08-28 |
| 52,966 | 2024 | 1 | 2024-01-04 | 2026-08-31 |
| 22,028 | 2024 | 2 | 2024-02-01 | 2026-08-25 |
| 24,337 | 2024 | 3 | 2024-03-01 | 2026-08-31 |
| 29,845 | 2024 | 4 | 2024-04-01 | 2026-08-31 |
| 25,606 | 2024 | 5 | 2024-05-01 | 2026-08-27 |
| 24,888 | 2024 | 6 | 2024-06-03 | 2026-08-28 |
| 27,468 | 2024 | 7 | 2024-07-01 | 2026-08-31 |
| 25,463 | 2024 | 8 | 2024-08-01 | 2026-08-31 |
| 23,610 | 2024 | 9 | 2024-09-02 | 2026-08-27 |
| 28,934 | 2024 | 10 | 2024-10-01 | 2026-08-31 |
| 27,483 | 2024 | 11 | 2024-11-01 | 2026-08-31 |
| 25,440 | 2024 | 12 | 2024-12-02 | 2026-08-31 |
| 86,610 | 2025 | 1 | 2025-01-06 | 2026-08-28 |
| 23,371 | 2025 | 2 | 2025-02-03 | 2026-08-28 |
| 27,570 | 2025 | 3 | 2025-03-03 | 2026-08-31 |
| 32,775 | 2025 | 4 | 2025-04-01 | 2026-08-31 |
| 27,685 | 2025 | 5 | 2025-05-01 | 2026-08-31 |
| 29,114 | 2025 | 6 | 2025-06-02 | 2026-08-28 |
| 31,093 | 2025 | 7 | 2025-07-01 | 2026-08-31 |
| 26,169 | 2025 | 8 | 2025-08-01 | 2026-08-31 |
| 29,155 | 2025 | 9 | 2025-09-01 | 2026-08-31 |
| 34,775 | 2025 | 10 | 2025-10-01 | 2026-08-31 |
| 25,887 | 2025 | 11 | 2025-11-04 | 2026-08-31 |
| 29,612 | 2025 | 12 | 2025-12-01 | 2026-08-28 |
| 76,661 | 2026 | 1 | 2026-01-05 | 2026-08-31 |
| 26,543 | 2026 | 2 | 2026-02-02 | 2026-08-31 |
| 31,802 | 2026 | 3 | 2026-03-02 | 2026-08-28 |
| 36,398 | 2026 | 4 | 2026-04-01 | 2026-08-28 |
| 27,909 | 2026 | 5 | 2026-05-01 | 2026-08-31 |
| 33,383 | 2026 | 6 | 2026-06-01 | 2026-08-31 |
| 33,500 | 2026 | 7 | 2026-07-01 | 2026-08-31 |
| 23,275 | 2026 | 8 | 2026-08-03 | 2026-08-31 |
| 件数 | 変更から更新までの期間_年単位 |
|---|---|
| 4,351,297 | 0 |
| 74,280 | 1 |
| 46,739 | 2 |
| 352,740 | 3 |
| 252,775 | 4 |
| 174,829 | 5 |
| 138,689 | 6 |
| 113,178 | 7 |
| 97,405 | 8 |
| 90,248 | 9 |
| 84,840 | 10 |
| 50,751 | 11 |
気になるのは、更新年月日が変更年月日に比べてだいぶ遅れていますね。
項目に法務省等に届け出た日付の情報が無いので、どこが原因かはわかりませんね。
検索対象外の状態をみてみましょう。
検索対象外は、次のように規定されています。
設立登記法人のうち、登記上の所在地が、住居表示の実施や区画整理等で既に廃止されており、現在では存在しない住所表記となっていることが確認できた法人について、検索対象から除外していることを示すデータ項目。
なお、この情報は法人単位で設定しており、データ提供時点の情報を表している。
select
count(A.一連番号) as 件数
,A.検索対象外
,C6.検索対象外_項目値
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
group by
A.検索対象外
,C6.検索対象外_項目値
;
| 件数 | 検索対象外 | 検索対象外_項目値 |
|---|---|---|
| 5,787,472 | 0 | 検索対象 |
| 40,299 | 1 | 検索対象外 |
上記の検索対象外の規定からみると所在地が不正との意味なのですが、どうして1%未満とはいえ住所が不正な状態で届け出を受け取るのだろうと不思議に思います。
処理区分、登記記録の閉鎖等の事由について、みてみましょう。
処理区分、登記記録の閉鎖等の事由は次のように規定されています。
- 処理区分
法人番号の指定、商号又は所在地に変更等が発生した事由をコード値で表す項目。
※英語表記及びフリガナの登録並びに検索対象除外の情報の更新に係る処理区分はありません(これらの項目は、提供済みのデータに英語表記若しくはフリガナの登録又は検索対象除外の情報を追加した上で、訂正データとして提供するため)。
値「01」は、新たに法人番号が指定されたことを表す情報であることを意味する。
値「11」は、商号又は名称が変更されたことを表す情報であることを意味する。
値「12」は、国内における本店又は主たる事務所の所在地の変更、国内に本店又は主たる事務所がない法人等の場合は、国内における事務所又は営業所の所在地の変更又は、市区町村合併等により住居表示が変更されたことを表す情報であることを意味する。
値「13」は、国外における本店又は主たる事務所の所在地が変更されたことを表す情報であることを意味する。
値「21」は、清算の結了、合併による解散などの事由により登記記録の閉鎖等の事由が生じたことを表す情報であることを意味する。
値「22」は、清算の結了、合併による解散などの事由により登記記録の閉鎖等が生じた後、清算結了等の手続に瑕疵があり、清算結了が無効になるなどの事由により登記記録が復活等したことを表す情報であることを意味する。
値「71」は、設立登記法人が、吸収合併を行ったことを表す情報であることを意味する。
値「72」は、吸収合併後存続した設立登記法人の吸収合併について無効判決が確定したことを表す情報であることを意味する。
値「81」は、設立登記法人について商号の登記が抹消されたことを表す情報であることを意味する。
値「99」は、法人番号の重複指定等の理由により法人番号の指定を撤回したこと及び公表に同意した人格のない社団等の代表者又は管理人が、公表の同意を撤回したことを表す情報であることを意味する。
値「99」が設定された場合は、「一連番号」、「法人番号」及び「更新年月日」を除く全ての項目値はブランクとなる。
- 登記記録の閉鎖等の事由
閉鎖の事由は、登記記録の閉鎖等が生じた事由を表すデータ項目。
01 清算の結了等
設立登記法人について、清算の結了等により登記記録が閉鎖された事を意味する。
11 合併による解散等
設立登記法人について、合併による解散等により登記記録が閉鎖された事を意味する。
21 登記官による閉鎖
設立登記法人について、商業登記規則第81条により登記記録の閉鎖された事を意味する。
31 その他の清算の結了等
設立登記法人以外について、清算の結了等に類する事由が生じた場合に表示する。
select
count(A.一連番号) as 件数
,A.処理区分
,C1.処理区分_項目値
,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
group by
A.処理区分
,C1.処理区分_項目値
,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
order by
A.処理区分
,C1.処理区分_項目値
,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
;
select
datepart(year,A.変更年月日) as 年
,count(A.一連番号) as 件数
,count(case when A.処理区分 in (1) then 1 else null end) as N'法人増加'
,count(case when A.処理区分 in (21,71,81) then 1 else null end) as N'法人減少'
,count(case when A.処理区分 in (11,12,13) then 1 else null end) as N'法人登記の変更'
,count(case when A.処理区分 in (22,72) then 1 else null end) as N'法人登記の復活など'
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
group by
datepart(year,A.変更年月日)
order by
datepart(year,A.変更年月日)
;
select
datepart(year,A.変更年月日) as 年
,count(case when A.処理区分 in (1) then 1 else null end)
- count(case when A.処理区分 in (21,71,81) then 1 else null end) as N'法人の増減'
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
group by
datepart(year,A.変更年月日)
order by
datepart(year,A.変更年月日)
;
| 件数 | 処理 区分 |
処理区分_項目値 | 登記記録 の閉鎖等 の事由 |
登記記録の閉鎖等 の事由_項目値 |
|---|---|---|---|---|
| 3,928,197 | 1 | 新規 | NULL | NULL |
| 2 | 1 | 新規 | 31 | その他の清算の結了等 |
| 119,242 | 11 | 商号又は名称の変更 | NULL | NULL |
| 966,591 | 12 | 国内所在地の変更 | NULL | NULL |
| 1 | 12 | 国内所在地の変更 | 31 | その他の清算の結了等 |
| 801 | 13 | 国外所在地の変更 | NULL | NULL |
| 506,590 | 21 | 登記記録の閉鎖等 | 1 | 清算の結了等 |
| 61,216 | 21 | 登記記録の閉鎖等 | 11 | 合併による解散等 |
| 209,937 | 21 | 登記記録の閉鎖等 | 21 | 登記官による閉鎖 |
| 1,415 | 21 | 登記記録の閉鎖等 | 31 | その他の清算の結了等 |
| 2,905 | 22 | 登記記録の復活等 | NULL | NULL |
| 30,854 | 71 | 吸収合併 | NULL | NULL |
| 9 | 72 | 吸収合併無効 | NULL | NULL |
| 11 | 81 | 商号の登記の抹消 | NULL | NULL |
| 年 | 件数 | 法人増加 | 法人減少 | 法人登記の変更 | 法人登記の復活など |
|---|---|---|---|---|---|
| 2015 | 2,949,783 | 2,921,854 | 13,487 | 14,440 | 2 |
| 2016 | 207,483 | 66,793 | 75,893 | 64,769 | 28 |
| 2017 | 199,778 | 70,122 | 62,476 | 67,124 | 56 |
| 2018 | 207,132 | 68,598 | 62,849 | 75,605 | 80 |
| 2019 | 213,136 | 72,715 | 64,361 | 75,972 | 88 |
| 2020 | 226,794 | 76,621 | 63,086 | 86,932 | 155 |
| 2021 | 247,966 | 92,036 | 62,259 | 93,308 | 363 |
| 2022 | 253,656 | 95,575 | 58,896 | 98,806 | 379 |
| 2023 | 290,688 | 113,677 | 64,817 | 111,822 | 372 |
| 2024 | 338,068 | 119,246 | 68,679 | 149,732 | 411 |
| 2025 | 403,816 | 136,653 | 123,383 | 143,295 | 485 |
| 2026 | 289,471 | 94,309 | 89,837 | 104,830 | 495 |
| 年 | 法人の増減 |
|---|---|
| 2015 | 2,908,367 |
| 2016 | -9,100 |
| 2017 | 7,646 |
| 2018 | 5,749 |
| 2019 | 8,354 |
| 2020 | 13,535 |
| 2021 | 29,777 |
| 2022 | 36,679 |
| 2023 | 48,860 |
| 2024 | 50,567 |
| 2025 | 13,270 |
| 2026 | 4,472 |
処理区分の規定から法人が増加するのは処理区分='新規'、法人が減少するのは処理区分=('登記記録の閉鎖等','吸収合併','商号の登記の抹消')となります。
法人数の増減でみると
法人の増加数: 3,928,197+1=3,928,198
法人の減少数: 506,590+61,216+209,937+1,415+30,854+11=810,023
年毎の増減数をみると2015年は制度当初なので290万法人の増加ですが、2016年には減少、2017年以降はすべて増加となっています。
新型コロナウイルス感染症による影響を2020年初頭から2023年春頃とすると、コロナ化でどんどん増加しているのが2025年以降は落ち着いてきているようです。
3-2. 同じ住所に複数の企業が登録されているとの話は本当ですか?
バーチャルオフィスやペーパーカンパニーなどで「同じ住所に多数の法人が存在する」という話をよく耳にしますが、実際はどうなのでしょうか?
a) 集計をしてみる
都道府県名・市区町村名・丁目番地等が同じ法人を集計し、同じ住所に存在する法人数をカウントします。
select top 30
row_number() over (order by PA.件数 desc) as 順位,
*
from (
select
A.国内所在地_都道府県
,A.国内所在地_市区町村
,A.国内所在地_丁目番地等
,count(A.一連番号) as 件数
,count(case when A.処理区分 in (21,71,81) then 1 else null end)
as 抹消法人件数
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
where A.国内所在地_都道府県 is not null
group by
A.国内所在地_都道府県
,A.国内所在地_市区町村
,A.国内所在地_丁目番地等
) PA
order by
PA.件数 desc
;
| 順 位 |
国内 所在 地_ 都道 府県 |
国内所 在地_ 市区町村 |
国内所在地_丁目番地等 | 件数 | 抹消 法人 件数 |
|---|---|---|---|---|---|
| 1 | 東京都 | 渋谷区 | 道玄坂1丁目10番8号 渋谷道玄坂東急ビル2F-C |
4643 | 137 |
| 2 | 東京都 | 千代田区 | 丸の内1丁目4番1号 東京共同会計事務所内 |
3351 | 426 |
| 3 | 東京都 | 渋谷区 | 神宮前6丁目23番4号 桑野ビル2階 |
2587 | 156 |
| 4 | 東京都 | 港区 | 浜松町2丁目2番15号 浜松町ダイヤビル2F |
2355 | 189 |
| 5 | 東京都 | 港区 | 南青山2丁目2番15号 | 2201 | 232 |
| 6 | 東京都 | 新宿区 | 西新宿3丁目3番13号 西新宿水間ビル6階 |
2107 | 73 |
| 7 | 東京都 | 中央区 | 銀座1丁目12番4号 N&EBLD.6F |
1868 | 46 |
| 8 | 東京都 | 港区 | 南青山3丁目1番36号 青山丸竹ビル6F |
1868 | 52 |
| 9 | 東京都 | 新宿区 | 西新宿3丁目3番13号 西新宿水間ビル2F |
1852 | 49 |
| 10 | 東京都 | 港区 | 虎ノ門3丁目22番10-201号 | 1824 | 903 |
| 11 | 大阪府 | 大阪市北区 | 梅田1丁目2番2号 大阪駅前第2ビル12-12 |
1763 | 34 |
| 12 | 東京都 | 港区 | 北青山1丁目3番1号 アールキューブ青山3階 |
1750 | 45 |
| 13 | 東京都 | 千代田区 | 丸の内3丁目1番1号 東京共同会計事務所内 |
1504 | 1487 |
| 14 | 東京都 | 千代田区 | 霞が関3丁目2-6 東京倶楽部ビルディング6階 |
1489 | 0 |
| 15 | 東京都 | 中央区 | 銀座1丁目22番11号 銀座大竹ビジデンス2F |
1483 | 50 |
| 16 | 東京都 | 千代田区 | 霞が関3丁目2番5号 | 1481 | 381 |
| 17 | 東京都 | 中央区 | 日本橋室町1丁目11番12号 日本橋水野ビル7階 |
1398 | 33 |
| 18 | 東京都 | 中央区 | 銀座1丁目22番11号 銀座大竹ビジデンス2階 |
1356 | 105 |
| 19 | 東京都 | 港区 | 南青山2丁目2番15号 ウィン青山942 |
1296 | 170 |
| 20 | 東京都 | 渋谷区 | 渋谷2丁目19-15 宮益坂ビルディング609 |
1147 | 54 |
| 21 | 東京都 | 港区 | 浜松町2丁目2番15号 | 1101 | 172 |
| 22 | 東京都 | 千代田区 | 丸の内2丁目7番2号 | 1071 | 64 |
| 23 | 東京都 | 港区 | 元赤坂1丁目1番7号 | 955 | 493 |
| 24 | 東京都 | 中央区 | 銀座7丁目13番6号 サガミビル2階 |
942 | 131 |
| 25 | 東京都 | 中央区 | 日本橋1丁目4番1号 | 884 | 369 |
| 26 | 東京都 | 中央区 | 日本橋1丁目4番1号 日本橋一丁目ビルディング |
850 | 350 |
| 27 | 東京都 | 千代田区 | 神田和泉町1番地6-16 ヤマトビル405 |
810 | 23 |
| 28 | 愛知県 | 名古屋市中村区 | 名駅4丁目24番5号 第2森ビル401 |
797 | 30 |
| 29 | 神奈川県 | 横浜市西区 | 浅間町1丁目4番3号 ウィザードビル402 |
749 | 17 |
| 30 | 東京都 | 渋谷区 | 恵比寿西2丁目8番4号 EX恵比寿西ビル5階 |
744 | 11 |
「渋谷道玄坂東急ビル2F-C」が減少を差し引くと約4,500法人と一番多いですね。
でもちょっと待ってください。
15位 「銀座1丁目22番11号銀座大竹ビジデンス2F」
と
18位 「銀座1丁目22番11号銀座大竹ビジデンス2階」
や
25位 「日本橋1丁目4番1号」
と
26位 「日本橋1丁目4番1号日本橋一丁目ビルディング」
は同じではないでしょうか。
表記ゆれがあるってことですね。
データベース的には表記ゆれを取り除きたいところです。
b) 丁目番地等のローマ数字に着目して記号化
住所表記における日本語や記号は多様な表現ができると思います。
これを「統一的」に表現する方法として、数字のみを抽出し、"-"で繋ぐ方法があります。
例えば、
15位 「銀座1丁目22番11号銀座大竹ビジデンス2F」
と
18位 「銀座1丁目22番11号銀座大竹ビジデンス2階」
を次のルールで変換します。
- 最初のローマ数字("0"~"9")より前の文字列はそのままとする。
- ローマ数字以外の文字列は"-"に変換する。
- ローマ数字は全角文字として変換する。
- 変換後の文字列で末尾の"-"は省略する。
変換してみると
15位 「銀座1丁目22番11号銀座大竹ビジデンス2F」
⇒ 「銀座-1-22-11-2」
と
18位 「銀座1丁目22番11号銀座大竹ビジデンス2階」
⇒ 「銀座-1-22-11-2」
で合致することになります。
変換の結果はテーブルとして保存することにします。
変換関連のスクリプト
IF OBJECT_ID('private_NormalizeAddressPattern') IS NOT NULL DROP FUNCTION dbo.private_NormalizeAddressPattern
GO
CREATE FUNCTION [dbo].[private_NormalizeAddressPattern] (@input NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
WITH SCHEMABINDING
AS
BEGIN
IF @input IS NULL OR @input = ''
RETURN @input;
DECLARE @str NVARCHAR(MAX) = @input;
-- ==========================================
-- 0. 事前準備: 半角数字を全角数字に統一 (要件3)
-- ==========================================
SET @str = REPLACE(@str, N'0', N'0');
SET @str = REPLACE(@str, N'1', N'1');
SET @str = REPLACE(@str, N'2', N'2');
SET @str = REPLACE(@str, N'3', N'3');
SET @str = REPLACE(@str, N'4', N'4');
SET @str = REPLACE(@str, N'5', N'5');
SET @str = REPLACE(@str, N'6', N'6');
SET @str = REPLACE(@str, N'7', N'7');
SET @str = REPLACE(@str, N'8', N'8');
SET @str = REPLACE(@str, N'9', N'9');
-- ==========================================
-- 1. 最初の数字の位置を特定
-- ==========================================
-- PATINDEXで最初に全角数字が出現するインデックス(1始まり)を取得
DECLARE @firstDigitPos INT = PATINDEX(N'%[0-9]%', @str);
-- 数字が一切含まれない場合はそのまま返却
IF @firstDigitPos = 0
RETURN @str;
-- ==========================================
-- 2. 最初の数字より前と後に分割 (要件1)
-- ==========================================
DECLARE @prefix NVARCHAR(MAX) = LEFT(@str, @firstDigitPos - 1);
DECLARE @rest NVARCHAR(MAX) = SUBSTRING(@str, @firstDigitPos, LEN(@str) - @firstDigitPos + 1);
-- ==========================================
-- 3. 数字以外の連続する文字列を単一の '-' に変換 (要件2)
-- ==========================================
DECLARE @resultRest NVARCHAR(MAX) = N'';
DECLARE @len INT = LEN(@rest);
DECLARE @i INT = 1;
DECLARE @ch NVARCHAR(1);
DECLARE @inNonDigit BIT = 0;
WHILE @i <= @len
BEGIN
SET @ch = SUBSTRING(@rest, @i, 1);
-- 全角数字かどうか判定
IF @ch LIKE N'[0-9]'
BEGIN
SET @resultRest = @resultRest + @ch;
SET @inNonDigit = 0;
END
ELSE
BEGIN
-- 非数字ブロックの開始時のみ '-' を1つ追加
IF @inNonDigit = 0
BEGIN
SET @resultRest = @resultRest + N'-';
SET @inNonDigit = 1;
END
END
SET @i = @i + 1;
END
-- 後半部の末尾が '-' の場合は除去
IF RIGHT(@resultRest, 1) = N'-'
SET @resultRest = LEFT(@resultRest, LEN(@resultRest) - 1);
-- ==========================================
-- 4. 前方文字列 + '-' + 後半変換結果 を結合して返却
-- ==========================================
RETURN @prefix + N'-' + @resultRest;
END;
GO
CREATE TABLE [dbo].[T法人番号_国内所在地_丁目番地等_数値抽出]
(
[国内所在地_丁目番地等] NVARCHAR(300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
, [行数] INT NOT NULL
, [国内所在地_丁目番地等_数値抽出] AS ([dbo].[private_NormalizeAddressPattern]([国内所在地_丁目番地等]))
, CONSTRAINT [PK__T法人番号_国内__846EBD61AA47CF9B] PRIMARY KEY ([国内所在地_丁目番地等] ASC)
)
delete
from dbo.T法人番号_国内所在地_丁目番地等_数値抽出
;
insert into dbo.
(国内所在地_丁目番地等,行数)
select
A.国内所在地_丁目番地等
,count(A.一連番号) as 行数
from dbo.T法人番号 A
group by A.国内所在地_丁目番地等
;
さて、数値のみを抽出した場合どうなるかをみてみましょう。
select top(10)
PA.[国内所在地_丁目番地等_数値抽出]
,PA.行数_数値抽出
,PA.パターン数
,PB.国内所在地_丁目番地等 as 変換前_丁目番地等
,PB.行数 as 変換前_行数
from (
SELECT TOP (1)
A.[国内所在地_丁目番地等_数値抽出]
,sum(A.行数) as 行数_数値抽出
,count(A.[国内所在地_丁目番地等_数値抽出]) as パターン数
FROM [dbo].[T法人番号_国内所在地_丁目番地等_数値抽出] A
group by A.国内所在地_丁目番地等_数値抽出
order by count(A.[国内所在地_丁目番地等_数値抽出]) desc
) PA
left outer join dbo.[T法人番号_国内所在地_丁目番地等_数値抽出] PB
on PA.国内所在地_丁目番地等_数値抽出=PB.国内所在地_丁目番地等_数値抽出
order by PA.パターン数 desc,PA.行数_数値抽出 desc,PB.行数 desc,PB.国内所在地_丁目番地等
| 国内所在地_ 丁目番地等_ 数値抽出 |
行数 _ 数値 抽出 |
パタ ーン 数 |
変換前_丁目番地等 | 変換 前_ 行数 |
|---|---|---|---|---|
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12-4 N&EBLD.7階 |
724 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12番4号 N&EBLD.7階 |
378 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12番4号 N&E・BLD.7階 |
80 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12-4 N&E・BLD.7階 |
34 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12-4 N&E.BLD.7階 |
33 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12-4 N&E-BLD.7階 |
26 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12番4号 N&E.BLD.7階 |
24 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12-4 N&EBLD.7F |
22 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12番4号 N&E-BLD.7階 |
22 |
| 銀座-1-12-4-7 | 1,581 | 85 | 銀座1丁目12番4号 N&EBLD.7F |
18 |
表記ゆれが多いもののうち上位だけを抽出しています。
いろんな書き方がされいて85パターンもバリエーションがあります。
表記ゆれを数値抽出で統合することで724から1581と倍以上に増えました。
表記ゆれは侮れませんね。
では、数値抽出で再度集計してみましょう。
select top 30
row_number() over (order by PA.件数 desc) as 順位,
*
from (
select
A.国内所在地_都道府県
,A.国内所在地_市区町村
,B.国内所在地_丁目番地等_数値抽出
,count(A.一連番号) as 件数
,count(case when A.処理区分 in (21,71,81) then 1 else null end)
as うち抹消法人件数
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
left outer join dbo.T法人番号_国内所在地_丁目番地等_数値抽出 B on A.国内所在地_丁目番地等=B.国内所在地_丁目番地等
where A.国内所在地_都道府県 is not null
group by
A.国内所在地_都道府県
,A.国内所在地_市区町村
,B.国内所在地_丁目番地等_数値抽出
) PA
order by
PA.件数 desc
;
| 順 位 |
国内所 在地_ 都道 府県 |
国内所在地_ 市区町村 |
国内所在地_丁目番地等_数値抽出 | 件数 | うち 抹消 法人 件数 |
|---|---|---|---|---|---|
| 1 | 東京都 | 渋谷区 | 道玄坂-1-10-8-2 | 5,284 | 155 |
| 2 | 東京都 | 中央区 | 銀座-1-22-11-2 | 3,487 | 205 |
| 3 | 東京都 | 千代田区 | 丸ノ内-1-4-1 | 3,459 | 446 |
| 4 | 東京都 | 渋谷区 | 神宮前-6-23-4-2 | 3,121 | 182 |
| 5 | 東京都 | 港区 | 浜松町-2-2-15-2 | 3,039 | 253 |
| 6 | 東京都 | 新宿区 | 西新宿-3-3-13-6 | 2,533 | 106 |
| 7 | 東京都 | 中央区 | 銀座-1-12-4-6 | 2,513 | 71 |
| 8 | 東京都 | 港区 | 南青山-2-2-15 | 2,372 | 251 |
| 9 | 東京都 | 港区 | 南青山-3-1-36-6 | 2,247 | 65 |
| 10 | 東京都 | 新宿区 | 西新宿-3-3-13-2 | 2,139 | 65 |
| 11 | 大阪府 | 大阪市北区 | 梅田-1-2-2-2-12-12 | 2,018 | 41 |
| 12 | 東京都 | 渋谷区 | 渋谷-2-19-15-609 | 2,003 | 92 |
| 13 | 東京都 | 港区 | 北青山-1-3-1-3 | 1,976 | 49 |
| 14 | 東京都 | 千代田区 | 霞が関-3-2-6-6 | 1,974 | 0 |
| 15 | 東京都 | 港区 | 虎ノ門-3-22-10-201 | 1,840 | 909 |
| 16 | 東京都 | 中央区 | 日本橋-1-4-1 | 1,742 | 720 |
| 17 | 東京都 | 千代田区 | 丸の内-3-1-1 | 1,608 | 1,556 |
| 18 | 東京都 | 中央区 | 銀座-1-12-4-7 | 1,581 | 59 |
| 19 | 東京都 | 千代田区 | 九段南-1-5-6-5 | 1,574 | 177 |
| 20 | 東京都 | 中央区 | 日本橋室町-1-11-12-7 | 1,561 | 38 |
| 21 | 東京都 | 千代田区 | 霞が関-3-2-5 | 1,552 | 413 |
| 22 | 東京都 | 港区 | 南青山-2-2-15-942 | 1,513 | 186 |
| 23 | 東京都 | 港区 | 浜松町-2-2-15 | 1,171 | 181 |
| 24 | 東京都 | 港区 | 六本木-1-6-1 | 1,170 | 382 |
| 25 | 東京都 | 千代田区 | 丸の内-2-7-2 | 1,105 | 73 |
| 26 | 東京都 | 中央区 | 銀座-7-13-6-2 | 1,055 | 149 |
| 27 | 東京都 | 千代田区 | 神田和泉町-1-6-16-405 | 992 | 26 |
| 28 | 東京都 | 渋谷区 | 神南-1-11-4-5 | 991 | 17 |
| 29 | 東京都 | 港区 | 元赤坂-1-1-7 | 958 | 493 |
| 30 | 神奈川県 | 横浜市西区 | 浅間町-1-4-3-402 | 917 | 19 |
順位がだいぶ変わりました。上位10位の変化をみてみましょう。
| 順 位 |
国内所 在地_ 都道 府県 |
国内所在地_ 市区町村 |
国内所在地_ 丁目番地等_数値抽出 |
順位の 変化 |
前の順位 |
|---|---|---|---|---|---|
| 1 | 東京都 | 渋谷区 | 道玄坂-1-10-8-2 | → | 1 |
| 2 | 東京都 | 中央区 | 銀座-1-22-11-2 | ↑↑ | 15と18 |
| 3 | 東京都 | 千代田区 | 丸ノ内-1-4-1 | ↓ | 2 |
| 4 | 東京都 | 渋谷区 | 神宮前-6-23-4-2 | ↓ | 3 |
| 5 | 東京都 | 港区 | 浜松町-2-2-15-2 | ↓ | 4 |
| 6 | 東京都 | 新宿区 | 西新宿-3-3-13-6 | → | 6 |
| 7 | 東京都 | 中央区 | 銀座-1-12-4-6 | → | 7 |
| 8 | 東京都 | 港区 | 南青山-2-2-15 | ↓ | 5 |
| 9 | 東京都 | 港区 | 南青山-3-1-36-6 | ↓ | 8 |
| 10 | 東京都 | 新宿区 | 西新宿-3-3-13-2 | ↓ | 9 |
| 15 | 東京都 | 港区 | 虎ノ門-3-22-10-201 | ↓ | 10 |
結局一番多く法人が登録されているのは「東京都 渋谷区 道玄坂-10-8-2」ということになりました。
ただ、数値抽出した形ではわかりにくいので、数値抽出した丁目番地等で統合した後で一番件数が多い表記方法に置き換えて集計するようにします。
丁目番地等の代表読替
CREATE TABLE [dbo].[T法人番号_国内所在地_丁目番地等_代表読替]
(
[国内所在地_丁目番地等] NVARCHAR(300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
, [行数] INT NOT NULL
, [国内所在地_丁目番地等_数値抽出] NVARCHAR(300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
, [国内所在地_丁目番地等_代表読替] NVARCHAR(300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
, CONSTRAINT [PK__T法人番号_国内__846EBD61F9185A17] PRIMARY KEY ([国内所在地_丁目番地等] ASC)
);
insert into dbo.T法人番号_国内所在地_丁目番地等_代表読替
(
国内所在地_丁目番地等
,行数
,国内所在地_丁目番地等_数値抽出
,国内所在地_丁目番地等_代表読替
)
select
A.国内所在地_丁目番地等
,A.行数
,A.国内所在地_丁目番地等_数値抽出
,B.国内所在地_丁目番地等_代表読替
from dbo.T法人番号_国内所在地_丁目番地等_数値抽出 A
left outer join
(
select
SA.国内所在地_丁目番地等_数値抽出
,SA.国内所在地_丁目番地等 as 国内所在地_丁目番地等_代表読替
,row_number() over (partition by SA.国内所在地_丁目番地等_数値抽出 order by SA.[行数] desc) as 順位
from dbo.T法人番号_国内所在地_丁目番地等_数値抽出 SA
) B
on A.国内所在地_丁目番地等_数値抽出=B.国内所在地_丁目番地等_数値抽出
and B.順位=1
;
では代表読替による上位10位までをみてみましょう。
select top (10)
row_number() over (order by PA.件数 desc) as 順位,
*
from (
select
A.国内所在地_都道府県
,A.国内所在地_市区町村
,B.国内所在地_丁目番地等_代表読替
,count(A.一連番号) as 件数
,count(case when A.処理区分 in (21,71,81) then 1 else null end)
as うち抹消法人件数
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
left outer join dbo.T法人番号_国内所在地_丁目番地等_代表読替 B on A.国内所在地_丁目番地等=B.国内所在地_丁目番地等
where A.国内所在地_都道府県 is not null
group by
A.国内所在地_都道府県
,A.国内所在地_市区町村
,B.国内所在地_丁目番地等_代表読替
) PA
order by
PA.件数 desc
;
| 順 位 |
国内所在地_ 都道府県 |
国内所 在地_ 市区町村 |
国内所在地_ 丁目番地等_ 代表読替 |
件数 | うち 抹消 法人 件数 |
|---|---|---|---|---|---|
| 1 | 東京都 | 渋谷区 | 道玄坂1丁目10番8号 渋谷道玄坂東急ビル2F-C |
5,284 | 155 |
| 2 | 東京都 | 中央区 | 銀座1丁目22番11号 銀座大竹ビジデンス2F |
3,487 | 205 |
| 3 | 東京都 | 千代田区 | 丸の内1丁目4番1号 東京共同会計事務所内 |
3,459 | 446 |
| 4 | 東京都 | 渋谷区 | 神宮前6丁目23番4号 桑野ビル2階 |
3,121 | 182 |
| 5 | 東京都 | 港区 | 浜松町2丁目2番15号 浜松町ダイヤビル2F |
3,039 | 253 |
| 6 | 東京都 | 新宿区 | 西新宿3丁目3番13号 西新宿水間ビル6階 |
2,533 | 106 |
| 7 | 東京都 | 中央区 | 銀座1丁目12番4号 N&EBLD.6F |
2,513 | 71 |
| 8 | 東京都 | 港区 | 南青山2丁目2番15号 | 2,372 | 251 |
| 9 | 東京都 | 港区 | 南青山3丁目1番36号 青山丸竹ビル6F |
2,247 | 65 |
| 10 | 東京都 | 新宿区 | 西新宿3丁目3番13号 西新宿水間ビル2F |
2,139 | 65 |
ちなみに、1位から3位の住所を調べてみると
1位 「東京都渋谷区道玄坂1丁目10番8号渋谷道玄坂東急ビル2F-C」
=> GMOオフィスサポート渋谷オフィス
https://www.gmo-office.com/area/shibuya/
2位 「東京都中央区銀座1丁目22番11号銀座大竹ビジデンス2F」
=> レゾナンス銀座店
https://virtualoffice-resonance.jp/access/access-ginza/
3位 「東京都千代田区丸の内1丁目4番1号東京共同会計事務所内」
=> 東京共同会計事務所
https://www.tkao.com/about-us/company/
との結果でした。
3-3. 出来てすぐに無くなる会社ってあるの?
a)出来てすぐに無くなる会社の集計
「出来てすぐ無くなる会社」を、次のように定義します。
- 「会社が出来る」とは、法人として登記されることとし、法人番号指定年月日に行われたものとみなす。
- 「会社が無くなる」とは、登記記録の閉鎖等または吸収合併または商号の登記の抹消が行われることとし、登記記録の閉鎖等年月日(空欄の場合は変更年月日)に行われたものとみなす。
- 「すぐ」とは、「会社が出来る」から「会社が無くなる」までが1年未満に行われることとする。
では、「出来てすぐ無くなる会社」をみてみましょう。
select
row_number() over (order by PA.件数 desc) as 順位
,*
from (
select top (10)
datediff(DAY,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日)) as 出来てから無くなるまでの日数
,count(A.一連番号) as 件数
--,A.処理区分
,C1.処理区分_項目値
--,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
left outer join dbo.T法人番号_国内所在地_丁目番地等_代表読替 B on A.国内所在地_丁目番地等=B.国内所在地_丁目番地等
where A.処理区分 in (21,71,81)
and (A.登記記録の閉鎖等年月日 is not null or A.変更年月日 is not null)
and datediff(DAY,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日))<366
group by
datediff(DAY,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日))
--,A.処理区分
,C1.処理区分_項目値
--,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
order by
count(A.一連番号) desc
) PA
;
select
row_number() over (order by PA.件数 desc) as 順位
,*
from (
select top (10)
datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日)) as 出来てから無くなるまでの月数
,count(A.一連番号) as 件数
--,A.処理区分
,C1.処理区分_項目値
--,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
left outer join dbo.T法人番号_国内所在地_丁目番地等_代表読替 B on A.国内所在地_丁目番地等=B.国内所在地_丁目番地等
where A.処理区分 in (21,71,81)
and (A.登記記録の閉鎖等年月日 is not null or A.変更年月日 is not null)
--and datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日))<12
group by
datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日))
--,A.処理区分
,C1.処理区分_項目値
--,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
order by
count(A.一連番号) desc
) PA
;
| 順 位 |
出来てから 無くなるま での日数 |
件数 | 処理区分_項目値 | 登記記録の 閉鎖等の事由_ 項目値 |
|---|---|---|---|---|
| 1 | 119 | 3,992 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 2 | 127 | 2,514 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 3 | 120 | 2,121 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 4 | 133 | 1,988 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 5 | 126 | 1,936 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 6 | 121 | 1,751 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 7 | 144 | 1,568 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 8 | 128 | 1,229 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 9 | 136 | 1,140 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 10 | 134 | 1,053 | 登記記録の閉鎖等 | 登記官による閉鎖 |
1位から10位まで登記官による閉鎖なんですね。
期間としては119日から144日なので3~4か月くらいでしょうか。
月数単位で長期の傾向です。
| 順位 | 出来てから 無くなるま での月数 |
件数 | 処理区分_項目値 | 登記記録の 閉鎖等の事由_ 項目値 |
|---|---|---|---|---|
| 1 | 111 | 59,927 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 2 | 123 | 47,365 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 3 | 4 | 22,791 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 4 | 27 | 10,809 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 5 | 39 | 10,780 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 6 | 51 | 10,656 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 7 | 63 | 10,053 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 8 | 15 | 9,572 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 9 | 75 | 8,386 | 登記記録の閉鎖等 | 登記官による閉鎖 |
| 10 | 87 | 8,242 | 登記記録の閉鎖等 | 登記官による閉鎖 |
1位と2位の111カ月と123カ月は9年3カ月と10年3カ月で、2015年10月の法人番号制度を導入した時期とほぼ一致するので、制度導入以前からあった法人が無くなったと考えた方が適当でしょう。
なので、3位の4カ月は前述の日数の集計とも合致します。
そのあとは、4位2年3カ月、5位3年3カ月、6位4年3カ月、7位5年3カ月、8位1年3カ月、9位6年3カ月、10位7年3カ月と続きます。
4位以下はすべて3カ月が付くのは、決算日の翌日から2か月以内に申告と納税を同時に行う必要があるからではないでしょうか。
b)背景を調べてみよう
「出来て1年以内で無くなる会社」の背景を考察してみます。
if object_id(N'tempdb..#無くなった会社') is not null
drop table #無くなった会社;
select
A.一連番号
,datediff(DAY,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日)) as 出来てから無くなるまでの日数
,A.処理区分
,C1.処理区分_項目値
,A.変更年月日
,A.法人種別
,C3.法人種別_項目値
,A.国内所在地_都道府県
,A.国内所在地_市区町村
,A.登記記録の閉鎖等年月日
,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
,A.変更事由の詳細
,A.法人番号指定年月日
into #無くなった会社
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
left outer join dbo.T法人番号_国内所在地_丁目番地等_代表読替 B on A.国内所在地_丁目番地等=B.国内所在地_丁目番地等
where A.処理区分 in (21,71,81)
;
with PA as (
select top (10)
A.処理区分_項目値
,A.登記記録の閉鎖等の事由_項目値
,count(A.一連番号) as 件数
from #無くなった会社 A
where
(A.登記記録の閉鎖等年月日 is null or A.登記記録の閉鎖等年月日>dateadd(year,1,'2015-10-05'))
group by
A.処理区分_項目値
,A.登記記録の閉鎖等の事由_項目値
order by
count(A.一連番号) desc
)
select
row_number() over (order by PPA.件数 desc) as 順位
,PPA.*
,floor(100.0*PPA.件数 / (select sum(件数) from PA)) as 比率
from PA PPA
;
with PA as (
select top (10)
A.処理区分_項目値
,A.登記記録の閉鎖等の事由_項目値
,count(A.一連番号) as 件数
from #無くなった会社 A
where
(A.登記記録の閉鎖等年月日 is null or A.登記記録の閉鎖等年月日>dateadd(year,1,'2015-10-05'))
and A.出来てから無くなるまでの日数<366
group by
A.処理区分_項目値
,A.登記記録の閉鎖等の事由_項目値
order by
count(A.一連番号) desc
)
select
row_number() over (order by PPA.件数 desc) as 順位
,PPA.*
,floor(100.0*PPA.件数 / (select sum(件数) from PA)) as 比率
from PA PPA
;
全体の結果です。
| 順位 | 処理区分_項目値 | 登記記録の 閉鎖等の事由_ 項目値 |
件数 | 比率 |
|---|---|---|---|---|
| 1 | 登記記録の閉鎖等 | 清算の結了等 | 460,868 | 62 |
| 2 | 登記記録の閉鎖等 | 登記官による閉鎖 | 186,778 | 25 |
| 3 | 登記記録の閉鎖等 | 合併による解散等 | 56,299 | 7 |
| 4 | 吸収合併 | NULL | 30,854 | 4 |
| 5 | 登記記録の閉鎖等 | その他の清算の結了等 | 1,228 | 0 |
| 6 | 商号の登記の抹消 | NULL | 11 | 0 |
出来て1年以内に無くなった会社の結果です。
| 順位 | 処理区分_項目値 | 登記記録の 閉鎖等の事由_ 項目値 |
件数 | 比率 |
|---|---|---|---|---|
| 1 | 登記記録の閉鎖等 | 清算の結了等 | 9,930 | 73 |
| 2 | 吸収合併 | NULL | 2,248 | 16 |
| 3 | 登記記録の閉鎖等 | 合併による解散等 | 1,179 | 8 |
| 4 | 登記記録の閉鎖等 | その他の清算の結了等 | 66 | 0 |
| 5 | 登記記録の閉鎖等 | 登記官による閉鎖 | 21 | 0 |
| 6 | 商号の登記の抹消 | NULL | 1 | 0 |
出来て1年以内に無くなった会社は、全体の傾向と比べて
- 清算の結了等、吸収合併の比率が高い(それぞれ、73%>62%、16%>4%)
- 合併による解散等、その他の清算の結了等、商号の登記の抹消の比率はほぼ同じ(それぞれ、8%≒7%、0%≒0%、0%≒0%)
- 登記官による閉鎖の比率が低い(0%<25%)
となりました。
きっぱりと無くなるか、吸収合併される会社が多くなるんですね。
c)登記官による閉鎖を除いた場合の出来てすぐ無くなった会社は?
背景を調べた表をみてみると、登記官による閉鎖の割合は低いことがわかりました。
とするとその前の出来てすぐ無くなった会社の集計で登記官による閉鎖ばかりが出ているのは、特殊事例を集計している可能性がありますね。
では、登記官による閉鎖を除いた場合、どうなるのでしょう。
select
row_number() over (order by PA.件数 desc) as 順位
,*
from (
select top (10)
datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日)) as 出来てから無くなるまでの月数
,count(A.一連番号) as 件数
--,A.処理区分
,C1.処理区分_項目値
--,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
left outer join dbo.T法人番号_国内所在地_丁目番地等_代表読替 B on A.国内所在地_丁目番地等=B.国内所在地_丁目番地等
where A.処理区分 in (21,71,81)
and (isnull(A.登記記録の閉鎖等年月日,A.変更年月日)>=dateadd(year,1,'2015-10-05'))
and datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日))<12
and (A.登記記録の閉鎖等の事由 is null or A.登記記録の閉鎖等の事由!=21)
group by
datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日))
--,A.処理区分
,C1.処理区分_項目値
--,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
order by
count(A.一連番号) desc
) PA
;
select
row_number() over (order by PA.件数 desc) as 順位
,*
from (
select top (5)
datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日)) as 出来てから無くなるまでの月数
,count(A.一連番号) as 件数
--,A.処理区分
,C1.処理区分_項目値
--,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
from dbo.T法人番号 A
left outer join dbo.C処理区分 C1 on A.処理区分=C1.処理区分CD
left outer join dbo.C訂正区分 C2 on A.訂正区分=C2.訂正区分CD
left outer join dbo.C法人種別 C3 on A.法人種別=C3.法人種別CD
left outer join dbo.C登記記録の閉鎖等の事由 C4 on A.登記記録の閉鎖等の事由=C4.登記記録の閉鎖等の事由CD
left outer join dbo.C最新履歴 C5 on A.最新履歴=C5.最新履歴CD
left outer join dbo.C検索対象外 C6 on A.検索対象外=C6.検索対象外CD
left outer join dbo.T法人番号_国内所在地_丁目番地等_代表読替 B on A.国内所在地_丁目番地等=B.国内所在地_丁目番地等
where A.処理区分 in (21,71,81)
and (isnull(A.登記記録の閉鎖等年月日,A.変更年月日)>=dateadd(year,1,'2015-10-05'))
--and datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日))<12
and (A.登記記録の閉鎖等の事由 is null or A.登記記録の閉鎖等の事由!=21)
group by
datediff(MONTH,A.法人番号指定年月日,isnull(A.登記記録の閉鎖等年月日,A.変更年月日))
--,A.処理区分
,C1.処理区分_項目値
--,A.登記記録の閉鎖等の事由
,C4.登記記録の閉鎖等の事由_項目値
order by
count(A.一連番号) desc
) PA
;
出来てから1年以内に無くなる会社の集計です。
| 順 位 |
出来てから 無くなるま での月数 |
件数 | 処理区分_項目値 | 登記記録の 閉鎖等の事由_ 項目値 |
|---|---|---|---|---|
| 1 | 11 | 1079 | 登記記録の閉鎖等 | 清算の結了等 |
| 2 | 9 | 972 | 登記記録の閉鎖等 | 清算の結了等 |
| 3 | 10 | 924 | 登記記録の閉鎖等 | 清算の結了等 |
| 4 | 8 | 887 | 登記記録の閉鎖等 | 清算の結了等 |
| 5 | 6 | 792 | 登記記録の閉鎖等 | 清算の結了等 |
| 6 | 7 | 788 | 登記記録の閉鎖等 | 清算の結了等 |
| 7 | 4 | 777 | 登記記録の閉鎖等 | 清算の結了等 |
| 8 | 3 | 776 | 登記記録の閉鎖等 | 清算の結了等 |
| 9 | 5 | 728 | 登記記録の閉鎖等 | 清算の結了等 |
| 10 | 2 | 701 | 登記記録の閉鎖等 | 清算の結了等 |
1年以内とはいっても1位、2位が11カ月、9カ月と1年近く頑張っているケースが多いですね。
半年以内は少ないみたいです。
1年以上を含めた傾向でみてみましょう。
| 順 位 |
出来てから 無くなるま での月数 |
件数 | 処理区分_項目値 | 登記記録の 閉鎖等の事由_ 項目値 |
|---|---|---|---|---|
| 1 | 26 | 5,899 | 登記記録の閉鎖等 | 清算の結了等 |
| 2 | 14 | 5,828 | 登記記録の閉鎖等 | 清算の結了等 |
| 3 | 38 | 5,407 | 登記記録の閉鎖等 | 清算の結了等 |
| 4 | 50 | 5,314 | 登記記録の閉鎖等 | 清算の結了等 |
| 5 | 20 | 5,194 | 登記記録の閉鎖等 | 清算の結了等 |
26カ月(2年2カ月)が一番多く、次が14カ月(1年2カ月)となっています。
登記官による閉鎖を含めたときの集計で3位(おそらく実質1位)の4カ月がなく、4位(おそらく実質2位)の27カ月が1位の26カ月とほぼ等しいと言えます。
2年目をやり遂げて心折れるパターンが多いんですね。
4. おわりに
国税庁の法人番号データは、日本の経済活動や企業動向の一端が見える非常に面白いデータセットです。
皆さんもぜひオープンデータをダウンロードして集計してみてください!
9/7 追記
一部異常と思われるデータがありますので、ご自身で集計する際はご注意ください。
SELECT
[一連番号]
,[処理区分]
,[訂正区分]
,[変更年月日]
,[法人種別]
,[登記記録の閉鎖等年月日]
,[登記記録の閉鎖等の事由]
FROM [HoujinBangouDB].[dbo].[T法人番号] A
where
A.登記記録の閉鎖等年月日 is not null
and A.登記記録の閉鎖等年月日!=A.変更年月日
;
| 一連番号 | 処理 区分 |
訂正 区分 |
変更 年月日 |
法人 種別 |
登記記録 の閉鎖等 年月日 |
登記記録 の閉鎖等 の事由 |
|---|---|---|---|---|---|---|
| 781927 | 1 | 0 | 2019-01-10 | 499 | 2019-03-31 | 31 |
| 3027468 | 1 | 1 | 2022-04-04 | 499 | 2023-01-31 | 31 |
| 3510339 | 12 | 0 | 2024-01-05 | 499 | 2020-10-29 | 31 |
これらのデータで異常に思われるポイントですが、
-
処理区分=1(新規)や処理区分=12(国内所在地の変更)であるにも関わらず、登記記録の閉鎖等の事由=31(その他の清算の結了等)となっている。(通常、登記記録の閉鎖等の事由=31のとき処理区分=21である。)
-
登記記録の閉鎖等年月日と変更年月日が異なる。(通常、登記記録の閉鎖等年月日がNULLではない場合は変更年月日と同じ日付になる。)
の2点です。
上記のとおり、3件のデータは通常と異なるポイントがありおそらく誤ったデータと思われます。
集計などにあたってはご注意ください。
10/2追記
9/30更新のデータをダウンロードして、上記のデータがどうなっているかを確認しました。
結果として、すべて変更されずに残っていました。
法人番号公表サイトのご意見・ご要望
から上記の内容を送っていたのですが、変更されませんでした。
ご利用される方はご注意ください。
10/2追記その2
異常と思われるデータについて、下記の国税庁 法人番号管理室に電話連絡してみました。
折り返しの電話連絡を頂き、次の内容をお話ししました。
法人番号管理室より
- 電話連絡にて伝えた異常と思われるデータは、通常の問い合わせなどで指摘された要件と同じ流れで処理されます。(了承)
- データの訂正したことを個別に連絡することはありません。(了承)
- 技術系サイトに投稿したとのことですが、どちらのサイトですか。(Qiitaを案内)
当方から
- 来月に更新データをみてこの記事の訂正をするかもしれないが、確実ではない。
- 法人番号公表サイトで「ご意見・ご要望」で送った際、メールアドレスを入力しても受け付けた旨のメールが届かないので、本当に受け付けられたかが確認できない。
今後、上記の「異常と思われる」データについて修正されると思われますが、もしかしたら国税庁法人番号管理室の判断で修正されないかもしれません。