在sql server中加入两个视图

Posted

技术标签:

【中文标题】在sql server中加入两个视图【英文标题】:Join two views in sql server 【发布时间】:2016-07-14 11:19:31 【问题描述】:

查看1

+------+---------------+    
|PERSON  | CONTACTLIST |   
+------+---------------+ 
| A  |      CONT1      |   
| A  |      CONT2      |
| A  |      CONT5      |
| B  |      CONT1      |
| B  |      CONT3      |
| C  |      CONT2      |
+------+---------------+   

视图2

+------+------------------+    
|PERSON  | MEETINGS WITH  |   
+------+------------------+ 
| A  |      CONT7         |   
| A  |      CONT8         |
| A  |      CONT1         |
| A  |      CONT2         |
| B  |      CONT1         |
| B  |      CONT3         |
| B  |      CONT4         |
| C  |      CONT1         |
| C  |      CONT2         |
| C  |      CONT3         |
| C  |      CONT4         |
| C  |      CONT5         |
+------+---------------+   

想要的结果

+------+------------------+ -------+   
|PERSON  | MEETINGS WITH  |        |
+------+------------------+ -------+
| A  |      CONT7         |    0   |
| A  |      CONT8         |    0   |
| A  |      CONT1         |    1   |
| A  |      CONT2         |    1   |
| B  |      CONT1         |    1   |
| B  |      CONT3         |    1   |
| B  |      CONT4         |    0   |
| C  |      CONT1         |    0   |
| C  |      CONT2         |    1   |
| C  |      CONT3         |    0   |
| C  |      CONT4         |    0   |
| C  |      CONT5         |    0   |
+------+---------------+  + -------+

我有“查看1”包含每个人的联系人列表! 一个人可以结识多个联系人,可以和他的联系人列表中的一个联系人开会,也可以不开会!

我想放置一个标志,表明会议是否与联系人列表中的联系人进行了会议!

【问题讨论】:

【参考方案1】:

然后是这样的

select v2.PERSON, 
       v2.[MEETINGS WITH],
       case when v1.PERSON is null then 0 else 1 end as FLAG
from   view2 v2
  left outer join view1 v1 on v2.PERSON = v1.PERSON and v2.[MEETING WITH] = v1.CONTACTLIST

【讨论】:

【参考方案2】:

试试这个

SELECT 
    V.PERSON,
    V.[MEETINGS WITH],
    (
        SELECT COUNT(1) 
        FROM 
            view1 
        WHERE 
            view1.PERSON = V.PERSON AND 
            view1.CONTACTLIST = V.[MEETINGS WITH]
     ) Counts
 FROM
     View2 V

【讨论】:

以上是关于在sql server中加入两个视图的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 pyspark 中加入两个临时视图后删除列不起作用,但它适用于数据框连接?

如何在 mvc 3.0 EF 5 中加入两个模型并在视图中显示它们

在 SQL 中加入来自同一个表的两个外键

有没有办法在 SQL 中加入两个查询,每个查询都有一个 order by?

使用 Spark SQL 在 cassandra 中加入两个表 - 错误:缺少 EOF

如何在 SQL Server 中同时连接两个数据库?