SQLサーバーのマッピングテーブルに問題があります。実際のコードは複雑なので、私は単純な例を作成します。 DBに5つのテーブルがあるとします。表A、表B、表C、表D、および変換表。詳細は下の画像を参照してください。
いくつかの要件でテーブルに挿入
質問です:簡単な方法で、新しいテーブルにレコードを挿入する方法? 私は想像することができるすべては、私の質問は本当に些細であれば申し訳ありません
D.
参加テーブルA、テーブルB、テーブルC、およびテーブルによって新しいテーブルにIDA、IDB、IDC、およびIDDを挿入しています。あなたが私を導くことを願っています。誰かがコードを見たい場合。ここで私がこれまでに作ったコード。
use [db-sbr]
go
create procedure fillJumlahUnitInit
as
declare
@tahun char(4)
,@entry integer
,@exit integer
,@jumlahunit0 integer
,@jumlahunit1 integer
,@beroperasi integer
set @tahun=year(GETDATE())-1
declare @tahun1 char(4)
set @tahun1=year(getdate())-2
--pilih snapshot yang mau dipakai.
declare @snapshotini varchar(max)
set @snapshotini= (select name from sbr.dbo.snapshot_list where year(created_date) = @tahun and type='tahunan')
declare @snapshot_y1 varchar(max)
set @snapshot_y1= (select name from sbr.dbo.snapshot_list where year(created_date) = @tahun1 and type='tahunan')
DECLARE @SQLString NVARCHAR(500);
declare
@tabel1 nvarchar(max)='['[email protected]+'].dbo.commonthesis_en'
,@tabel2 nvarchar(max)='['[email protected]_y1+'].dbo.commonthesis_en'
--jumlah birth = count (id) yang tahun berdiri sama dengan tahun snapshot
set @SQLString =
N'select @entry = COUNT(DISTINCT identerprise)
FROM '[email protected]+N'
where tahunberdiri = '[email protected]
EXECUTE sp_executesql
@SQLString,N'@entry int out', @entry out;
--jumlah death= count (id) yang thn kmrn aktif join tahun ini tutup on idA=idB
set @SQLString=
N'select @exit = COUNT(DISTINCT y.identerprise)
FROM '+ @tabel1+N' as y
INNER JOIN '+ @tabel2+N' as y1
ON y1.identerprise= y.identerprise
where y.statusperusahaan=1 and y1.statusperusahaan=4';
EXECUTE sp_executesql
@SQLString,N'@exit int out', @exit out;
--jumlah awal tahun=jumlah akhir tahun kemarin
--init
set @SQLString =
N'Select @jumlahunit0= count (distinct identerprise)
from '[email protected]+N' where statusperusahaan=1 or statusperusahaan=2
or statusperusahaan=3 or statusperusahaan=5)';
EXECUTE sp_executesql
@SQLString,N'@jumlahunit0 int out', @jumlahunit0 out;
--tahun berikutnya
/*
set @SQLString=N'Select @jumlahunit0= jumlahunit1
from SBR.dbo.jumlah_unit where tahun='[email protected]
EXECUTE sp_executesql @SQLString,N'@jumlahunit0 int out', @jumlahunit0 out;
*/
--jumlah akhir tahun = count yang blm berproduksi/tutup sementara
set @SQLString =
N'Select @jumlahunit1= count (distinct identerprise)
from '[email protected]+N' where statusperusahaan=2
or statusperusahaan=3 or statusperusahaan=5)';
EXECUTE sp_executesql
@SQLString,N'@jumlahunit1 int out', @jumlahunit1 out;
も私が試した:
use sbr
insert into note (kddesa,kdkec,kdkab,kdprop,kdkategori,kdkbli,statusperusahaan,unitstatistik,institusi)
select distinct a.kddesa,
a.kdkec,
a.kdkab,
a.kdprop,
a.kdkategori,
a.kdkbli,
a.statusperusahaan,
a.unitstatistik,
a.institusi
from [db-sbr].dbo.commonthesis_en as a
JOIN [db-sbr].dbo.m_institusi as b on b.kdinstitusi=a.institusi
JOIN [db-sbr].dbo.m_unitstatistik as c on c.kdsu=a.unitstatistik
JOIN [db-sbr].dbo.m_kondisi as d on d.kdkondisi=a.statusperusahaan
JOIN [db-sbr].dbo.m_kbli as e on e.kdkbli =a.kdkbli
JOIN [db-sbr].dbo.m_kategori as f on f.kdkategori=a.kdkategori
JOIN [db-sbr].dbo.m_propinsi as g on g.kdprop=a.kdprop
JOIN [db-sbr].dbo.m_kabupaten as h on h.kdprop=a.kdprop and h.kdkab=a.kdkab
JOIN [db-sbr].dbo.m_kecamatan as i on i.kdprop=a.kdprop and i.kdkab=a.kdkab and i.kdkec=a.kdkec
JOIN [db-sbr].dbo.m_desa as j on j.kdprop=a.kdprop and j.kdkab=a.kdkab and j.kdkec=a.kdkec and j.kddesa=a.kddesa
注:note
テーブルは新しいテーブルで、commonthesis_en
テーブルをテーブルに変換され、他のテーブルは、テーブルA、B、C、Dのようなものです。 @entry, @exit, @jumlahunit0, @jumlahunit1
はcountからの変数です。それでも合計数です。 (私はida,idb,idc,idd
により、institusi
、unitstatistik
などによって、または例では、それをカウントする。)
ここでは、ユーザーが問題を解決するために努力してもらいたいと思っていますが、質問に仕事を入力することを拒否しています。私はそうは思わない。 –
@PieterGeerkens、私は衰退しない。私は、ユーザーが問題を最も簡単に理解できるようにしたい。あなたがコードを望むなら、それを添付することができます。 – Kurniawantaari