我试着找这个问题,但没有发现任何相关的问题。所以就这样..。
我有三个表,其中非常简化的版本如下:
Practitioners:
practitioner_id :: intname :: nvarchar保险:
insurance_id :: intname :: nvarcharInsuranceLink:
practitioner_id :: intinsurance_id :: int因此,从业人员表包含从业人员列表,保险表包含保险列表,链接表表示哪个从业者支持哪种保险。
现在,我需要创建一个视图,它可以显示如下信息:
ViewTable:
practitioner_id :: intpractitioner_name :: nvarcharinsurance_1 :: bitinsurance_2 :: bit .....insurance_100 :: bit换句话说,视图中的列是从业人员的ID和名称,以及保险中存在的每个保险(以保险名称作为列名(有一个强制条件,即保险名称是唯一的)。保险栏中的单元格将指示该从业人员是否支持该保险。
有办法这样做吗?
或者更好的是,是否可以在DataSet上以VB.NET形式使用excel样式的枢轴表?这也能解决我的许多问题。
发布于 2011-08-23 15:50:45
枢轴是你要找的关键字。
select * from
(select
practitioner_id,
practitioner_name,
insurance_name
from practitioner p
join insurancelink il on p.practitioner_id = il.practitioner_id
join insurance i on il.insurance_id = i.insurance_id
)
pivot (count(*) for insurance_name in ([insurancename1],[insurancename2], ..., [insurancename100]))我知道你现在想知道是否有办法避免列出所有的保险名称/让它不是一个固定的列表。答案是否定的,差不多。您可以通过编程创建视图,但是在添加保险时,视图仍然需要更新。
https://stackoverflow.com/questions/7163712
复制相似问题