【问题标题】:Compare multiple conditions sql server比较多个条件sql server
【发布时间】:2017-06-19 03:21:38
【问题描述】:

我有两个表格显示以下数据

表 1

Number Time  CID
 001    24    1
 002    12    1
 003    25    2
 004    7     2

范围表 2

 Time1 Time2  CID   PhoneNumber
 7      12    1      333
 24     99    null   300 
 7      24    null   301
 7      12     2     345

要求的结果

 Number Time  PhoneNumber
 001    24    300
 001    24    301
 002    12    333
 002    12    301
 003    25    300
 004    7     345
 004    7     301

在范围表CID中“NULL”表示检查时间范围,所有CID都包括在内。其中 CID 值可用与表 1 中的 CID 进行比较。

【问题讨论】:

  • 这两个表之间的联系是什么?你为什么要这样加入他们?这是一个好的开始,您提供了您想要的最终结果,但是您要解决的问题是什么?到目前为止,您尝试过什么?

标签: sql sql-server sql-server-2008 sql-server-2012


【解决方案1】:

你可以join 2张这样的桌子

select t1.Number, t1.Time, t2.PhoneNumber
from Table1 t1
INNER JOIN Table2 t2 on t1.Time between t2.Time1 and t2.Time2 
WHERE t1.CID = t2.CID or t2.CID is null
ORDER BY t1.Number

演示链接:http://rextester.com/IDKHA81401

【讨论】:

    【解决方案2】:
    SELECT 
    tb1.Number
    ,tb1.[Time]
    ,tb2.PhoneNumber
    FROM table1 tb1
    INNER JOIN table2 tb2 ON tb1.CID = ISNULL(tb2.CID, tb1.CID) 
    AND tb1.[Time] BETWEEN tb2.[Time1] AND tb2.[Time2]
    ORDER BY tb1.Number
    

    我希望它对你有用。

    【讨论】:

      猜你喜欢
      • 2014-02-27
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多