首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配SQL Server中的变量数据

问如何匹配SQL Server中的变量数据
EN

Stack Overflow用户
提问于 2018-01-17 07:46:08
回答 1查看 184关注 0票数 0

我需要在两个平面表格之间映射多对多关系。表A包含可能的配置列表(其中每一列是一个问题,单元格值是答案)。空值表示答案无关紧要。表B包含具有相同列的实际配置。

最后,我需要最终结果来显示表B和A之间映射了哪些配置:

代码语言:javascript
复制
Example 

ActualId | ConfigId
---------+---------
    5    |  1
    6    |  1
    8    |  2
    .    |  .
    .    |  .
    .    |  .
    N    |  M 

为了给出一个我正在处理的表和数据的简单示例,第一个表应该是这样的:

代码语言:javascript
复制
Table A
--------
ConfigId | Size | Color | Cylinders | ... | ColumnN
---------+------+-------+-----------+-----+--------
    1    |  3   |       |    4      | ... |   5   
    2    |  4   |   5   |    5      | ... |   5
    3    |      |   5   |           | ... |   5

表B看起来像这样:

代码语言:javascript
复制
Table B
-------
ActualId | Size | Color | Cylinders | ... | ColumnN
---------+------+-------+-----------+-----+--------
    1    |  3   |  1    |    4      | ... |    5
    2    |  3   |  8    |    4      | ... |    5
    3    |  4   |  5    |    5      | ... |    5
    4    |  7   |  5    |    6      | ... |    5

由于空值表示任何值都可以工作,因此预期的结果将是:

代码语言:javascript
复制
Expected      
---------
ActualId | ConfigId
---------+---------
   1     |    1
   2     |    1
   3     |    2
   3     |    3
   4     |    3

我正在尝试找出匹配实际数据的最佳方法,这些数据有超过100列。我知道尝试检查每一列的空值是绝对错误的,也不会很好地执行。我真的对这个问题很着迷,希望能找到解决这个问题的最佳方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-17 07:54:31

因此,这与表a的大小、颜色和柱面有关。

大小匹配将是A与B:如果A.SIZE为null,则比较将为B.SIZE=B.SIZE,这将始终返回true。如果A.SIZE不为空,则比较将为A.SIZE=B.SIZE,只有当它们匹配时才为真。

颜色和圆柱体的匹配是相似的。

代码语言:javascript
复制
SELECT * FROM TABLEA A
    INNER JOIN TABLEB B ON ISNULL(A.SIZE, B.SIZE)=B.SIZE
        AND ISNULL(A.COLOR, B.COLOR)=B.COLOR
        AND ISNULL(A.CYLINDERS, B.CYLINDERS)=B.CYLINDERS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48291607

复制
相关文章

相似问题

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