我正在尝试基于主表和四个活动表构建SQL视图。有四种活动类型,Activity1,Activity2等。
表格由主表的主键链接。活动表将其链接为外键。主键可能在同一个表中有多个活动记录,或者在许多活动表中有多个记录。
我想创建一个包含每个主键列的视图,如果它只在一个活动表中有任意数量的记录,那么该列将包含该活动的名称(“Activity1”,“Activity2”等等,如果它存在于多个活动表中而不是放置“多个”,并且如果它们都不存在于这些表中,则放入“无”。
我一直在尝试在SQL中使用EXISTS,但是如果存在多行,我不确定如何使用默认值,例如“Multiple”和“None”。
这在C#中不是问题,但我需要在SQL视图中专门完成它而且我很茫然。
答案 0 :(得分: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