2016-10-19 5 views
0

Я пытаюсь создать SQL-представление на основе основной таблицы и четырех таблиц действий. Существует четыре вида деятельности: Activity1, Activity2 и т. Д.Создайте представление, где, если строка существует в одной таблице, поместите заданное значение, и если она существует в нескольких таблицах, поместите 'multiple'

Таблицы связаны основным ключом основной таблицы. Таблицы активности привязаны как внешний ключ. Первичный ключ может иметь несколько записей активности в одной таблице или несколько записей во многих таблицах действий.

Я хочу создать представление, в котором есть столбец для каждого первичного ключа, и если он имеет любое количество записей только в одной таблице действий, то столбец будет содержать имя этого действия («Activity1», «Activity2» »и т. д.), и если он существует в более чем одной таблице действий, вместо этого ставится« Multiple », и если он не существует ни в одной из этих таблиц, чтобы поставить« None ».

Я пытаюсь использовать EXISTS в SQL, но я не уверен, как использовать значение по умолчанию, такое как «Несколько» и «Нет», если существует несколько строк.

Это не проблема в C#, но мне нужно это сделать в SQL View специально, и я не в порядке.

+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

Это выглядит как то, что мне нужно. Я проверю это и дам вам знать. –