2016-07-24 23 views
2

SQLサーバーにいくつかのテーブルを結合したいとします。私が得たいものは、下の写真のようなものです。 tes_A、tes_B、tes_C、tes_jumlahのテーブルがあるとします。 tes_jumlahは、tes_A、tes_B、およびtes_C表の組み合わせです。 jumlahA、jumlahB、およびjumlahCは、他の表の行数を数えることによって得られることに注意してください。SQL Serverの条件付きマルチプルカウント関数

どのようにtes_jumlahテーブルの結果を写真のように表示するには?

ここには、jumlahA、jumlahB、およびjumlahCが取得されたコードが含まれています。

delete sbr.dbo.tes_A 
--entry 
insert into sbr.dbo.tes_A 
select kddesa,kdkec,kdkab,kdprop, COUNT(DISTINCT idestablishment) as jumlahA 
    FROM [db-sbr-20130724T193906220SS].dbo.commonthesis_es 
    where tahunberdiri = 2013 
    group by kddesa,kdkec,kdkab,kdprop 
--exit 
delete sbr.dbo.tes_B 
insert into sbr.dbo.tes_B 
select y.kddesa,y.kdkec,y.kdkab,y.kdprop, COUNT(DISTINCT y.idestablishment) as jumlahB 
FROM [db-sbr-20120724T193741793SS].dbo.commonthesis_es as y 
INNER JOIN [db-sbr-20130724T193906220SS].dbo.commonthesis_es as y1 
     ON y1.idestablishment = y.idestablishment 
--join [db-sbr-20120724T193741793SS].dbo.m_desa as d on  d.kddesa=y1.kddesa and d.kddesa=y.kddesa 
where y.statusperusahaan=1 and y1.statusperusahaan=4 
group by y.kddesa,y.kdkec,y.kdkab,y.kdprop 
--jumlah akhir tahun 
delete sbr.dbo.tes_C 
insert into sbr.dbo.tes_C 
Select kddesa,kdkec,kdkab,kdprop,count (distinct idestablishment) as jumlahC 
from [db-sbr-20130724T193906220SS].dbo.commonthesis_es where statusperusahaan=2 
or statusperusahaan=3 or statusperusahaan=5 
group by kddesa,kdkec,kdkab,kdprop 

そして、これは、テーブル・スクリプトとサンプルデータです:

USE [SBR] 
GO 
/****** Object: Table [dbo].[tes_A] Script Date: 24/07/2016 22.22.41 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[tes_A](
[kddesa] [nchar](3) NULL, 
[kdkec] [nchar](3) NULL, 
[kdkab] [nchar](2) NULL, 
[kdprop] [nchar](2) NULL, 
[jumlahA] [bigint] NULL 
) ON [PRIMARY] 

GO 
/****** Object: Table [dbo].[tes_B] Script Date: 24/07/2016 22.22.41 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[tes_B](
[kddesa] [nchar](3) NULL, 
[kdkec] [nchar](3) NULL, 
[kdkab] [nchar](2) NULL, 
[kdprop] [nchar](2) NULL, 
[jumlahB] [bigint] NULL 
) ON [PRIMARY] 

GO 
/****** Object: Table [dbo].[tes_C] Script Date: 24/07/2016 22.22.41 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[tes_C](
[kddesa] [nchar](3) NULL, 
[kdkec] [nchar](3) NULL, 
[kdkab] [nchar](2) NULL, 
[kdprop] [nchar](2) NULL, 
[jumlahC] [bigint] NULL 
) ON [PRIMARY] 

GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (NULL, NULL, N'71', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (NULL, N'020', N'72', N'21', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (NULL, N'061', N'06', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'02', N'73', 112) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'03', N'73', 28) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'04', N'73', 55) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'09', N'73', 6) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'10', N'73', 18) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'13', N'73', 7) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'14', N'73', 7) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'22', N'73', 4) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N' ', N'73', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N'020', N'13', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N'020', N'73', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N'030', N'09', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N'040', N'22', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N'050', N'04', N'73', 2) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N' ', N'060', N'09', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'001', N'010', N'03', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'001', N'020', N'03', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'001', N'030', N'10', N'73', 3) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'001', N'040', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'001', N'061', N'02', N'21', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'001', N'070', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'002', N'010', N'02', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'002', N'020', N'03', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'002', N'020', N'10', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'002', N'030', N'10', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'002', N'051', N'09', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'002', N'080', N'02', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'003', N' ', N'02', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'003', N'030', N'10', N'73', 2) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'003', N'031', N'04', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'003', N'060', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'004', N'011', N'10', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'004', N'020', N'02', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'004', N'021', N'16', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'004', N'030', N'04', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'004', N'050', N'10', N'73', 3) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'005', N'010', N'14', N'73', 3) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'005', N'020', N'10', N'73', 3) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'005', N'050', N'10', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'005', N'051', N'16', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'006', N'030', N'04', N'73', 2) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'006', N'040', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'006', N'070', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'007', N'010', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'007', N'030', N'04', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'007', N'040', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'007', N'041', N'09', N'73', 2) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'007', N'050', N'10', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'007', N'060', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'008', N'040', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'008', N'050', N'14', N'73', 4) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'009', N'010', N'02', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'009', N'030', N'10', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'009', N'031', N'03', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'009', N'041', N'16', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'009', N'060', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'010', N'010', N'14', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'011', N'011', N'03', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'013', N'030', N'04', N'73', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'016', N'070', N'05', N'21', 1) 
GO 
INSERT [dbo].[tes_B] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahB]) VALUES (N'017', N'040', N'09', N'73', 1) 
GO 
INSERT [dbo].[tes_C] ([kddesa], [kdkec], [kdkab], [kdprop], [jumlahC]) VALUES (N' ', N' ', N'02', N'73', 1) 
GO 

tes_jumlahテーブルスクリプト:

USE [SBR] 
GO 
/****** Object: Table [dbo].[tes_jumlah] Script Date: 24/07/2016 22.41.50 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TABLE [dbo].[tes_jumlah](
[kddesa] [nchar](3) NULL, 
[kdkec] [nchar](3) NULL, 
[kdkab] [nchar](2) NULL, 
[kdprop] [nchar](2) NULL, 
[jumlahA] [bigint] NULL, 
[jumlahB] [bigint] NULL, 
[jumlahC] [bigint] NULL 
) ON [PRIMARY] 

GO 

私はこれを試してみましたが、それは私が望んでいたまさにではありません。

insert into sbr.dbo.tes_jumlah (kddesa,kdkec,kdkab,kdprop,jumlahA) 
select * from sbr.dbo.tes_A 
insert into sbr.dbo.tes_jumlah (kddesa,kdkec,kdkab,kdprop,jumlahB) 
select * from sbr.dbo.tes_B 
insert into sbr.dbo.tes_jumlah (kddesa,kdkec,kdkab,kdprop,jumlahC) 
select * from sbr.dbo.tes_C 

これも試しましたが、構文が正しくないようです。

insert into sbr.dbo.tes_jumlah 
Select a.kddesa,a.kdkec,a.kdkab,a.kdprop,a.jumlahA,b.jumlahB,c.jumlahC 
from sbr.dbo.tes_A a 
full join sbr.dbo.tes_B as b 
full join sbr.dbo.tes_C as c 
group by a.kddesa,a.kdkec,a.kdkab,a.kdprop 

ありがとう、ごめんなさい、英語が悪いです。 Ilustrationによって: ilustration 私のようなものを取得したいこと: what I want to obtain

+1

タリを取得するためにテーブルを結合よりも、ここでそれを見て、質問をフレームにしてみてくださいこれに基づいて、あなたは驚くほど速い解答を得るでしょう、現在の説明はそれほど有益ではありません.https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public -forum/ – TheGameiswar

+0

@TheGameiswar、あなたの助けに感謝します。すぐに質問を編集します。 – Kurniawantaari

+0

@TheGameiswar、スクリプトテーブルとサンプルデータが含まれています。 – Kurniawantaari

答えて

1

FULL OUTERであなたのクエリはほとんどあり登録しよう!これを試してみてください:UNIONと

SELECT p.kddsa, 
     p.kdkec, 
     p.kdkab, 
     p.kdprop, 
     a.jumlahA, 
     b.jumlahB, 
     c.jumlahC 
FROM (
SELECT kddsa, kdkec, kdkab, kdprop 
FROM tes_a 
UNION 
SELECT kddsa, kdkec, kdkab, kdprop 
FROM tes_b 
UNION 
SELECT kddsa, kdkec, kdkab, kdprop 
FROM tes_c) as p 
LEFT JOIN tes_a as a 
    ON p.kddsa=a.kddsa and p.kdkev=a.kdkec and p.kdkab=a.kdkab and p.kdprop=a.kdprop 
LEFT JOIN tes_b as b 
    ON p.kddsa=b.kddsa and p.kdkev=b.kdkec and p.kdkab=b.kdkab and p.kdprop=b.kdprop 
LEFT JOIN tes_c as c 
    ON p.kddsa=c.kddsa and p.kdkev=c.kdkec and p.kdkab=c.kdkab and p.kdprop=c.kdprop 

部分は、あなたは(重複なし)すべてのテーブルからすべての最初の4列を取得し、我々はjumlahN列

+0

ありがとうございます。やってみます。 – Kurniawantaari