首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个表和一个链接表转换为一个大表。

将两个表和一个链接表转换为一个大表。
EN

Stack Overflow用户
提问于 2011-08-23 15:41:37
回答 1查看 101关注 0票数 0

我试着找这个问题,但没有发现任何相关的问题。所以就这样..。

我有三个表,其中非常简化的版本如下:

Practitioners:

  • practitioner_id :: int
  • name :: nvarchar

保险:

  • insurance_id :: int
  • name :: nvarchar

InsuranceLink:

  • practitioner_id :: int
  • insurance_id :: int

因此,从业人员表包含从业人员列表,保险表包含保险列表,链接表表示哪个从业者支持哪种保险。

现在,我需要创建一个视图,它可以显示如下信息:

ViewTable:

  • practitioner_id :: int
  • practitioner_name :: nvarchar
  • insurance_1 :: bit
  • insurance_2 :: bit .....
  • insurance_100 :: bit

换句话说,视图中的列是从业人员的ID和名称,以及保险中存在的每个保险(以保险名称作为列名(有一个强制条件,即保险名称是唯一的)。保险栏中的单元格将指示该从业人员是否支持该保险。

有办法这样做吗?

或者更好的是,是否可以在DataSet上以VB.NET形式使用excel样式的枢轴表?这也能解决我的许多问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-23 15:50:45

枢轴是你要找的关键字。

代码语言:javascript
复制
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]))

我知道你现在想知道是否有办法避免列出所有的保险名称/让它不是一个固定的列表。答案是否定的,差不多。您可以通过编程创建视图,但是在添加保险时,视图仍然需要更新。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7163712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档