2016-10-19 8 views
0

メインテーブルと4つのアクティビティテーブルに基づいてSQLビューを作成しようとしています。 Activity1、Activity2などの4つのアクティビティタイプがあります。1つのテーブルに行が存在していて、複数のテーブルに複数のテーブルが存在する場合は、「複数」を入力します。

テーブルはメインテーブルのプライマリキーでリンクされています。アクティビティー表には外部キーとしてリンクされています。主キーには、同じ表内に複数のアクティビティー・レコードが存在するか、アクティビティー表の多くのレコードに複数のレコードがある場合があります。

すべての主キーの列を持つビューを作成し、1つのアクティビティテーブルのみにレコードがある場合は、そのアクティビティの名前( "Activity1"、 "Activity2 "など)、複数のアクティビティテーブルに存在し、代わりに"複数 "を指定し、いずれのテーブルにも存在しない場合は"なし "とします。

私はEXISTSをSQLで使用しようとしていましたが、複数の行が存在する場合は "Multiple"や "None"などのデフォルト値を使用する方法がわかりません。

これはC#では問題ありませんが、SQLビューで具体的に行う必要がありますが、私は迷っています。私はあなただけのようなあなたのビューでのcase文が必要だと思う

+0

は私が必要なもののように見える適切なデータサンプルと期待される結果 – scaisEdge

答えて

0

select 

case when iif(a1.activity is null , 0,1) + iif(a2.activity is null , 0,1) +iif(a3.activity is null , 0,1)+iif(a4.activity is null , 0,1) > 1 then "Multiple" 
when iif(a1.activity is null , 0,1) + iif(a2.activity is null , 0,1) +iif(a3.activity is null , 0,1)+iif(a4.activity is null , 0,1) = 0 then "none" 
else COALESCE (a1.activity,a2.activity,a3.activity,a4.activity) end as [activity] 

from main_table m 
left join activity1_table a1 
on m.key = a1.key 
left join activity2_table a2 
on m.key = a2.key 
left join activity3_table a3 
on m.key = a3.key 
left join activity4_table a4 
on m.key = a4.key 
+0

を示しました。私はそれをテストし、あなたに知らせるでしょう。 –

関連する問題