【问题标题】:SQL Server : expand range to include missing rowsSQL Server:扩大范围以包括缺失的行
【发布时间】:2020-03-25 08:02:17
【问题描述】:

我有一个表 (A),其中 PK 是一个 int:

Entry No.    Date     Product
-------------------------------
10001        1/1/19   Jeans
10002        1/1/19   Shoes
10003        2/1/19   Jeans...

我有另一个表 (B),下面有示例数据(所有值都是 int):

ID  Begin  End
-------------------
1   10001  10003
2   10004  10007
3   10008  10019...

我需要为表 A 中的每个 [Entry No.] 找到表 B 中的 [ID]。

我认为这需要取消透视表 B,因此 [Begin] 和 [End] 在同一列中,然后“扩展”行,因此每个 int 都有一行:

ID  Entry No.
-------------
1   10001
1   10002
1   10003
2   10004
2   10005
2   10006
2   10007
3   10008...

然后我可以在 [Table A].[Entry No.] = [Table B].[Entry.No.] 上将它加入到表 A

我的未透视代码:

SELECT 
    ID, [Entry No.]
FROM
    (SELECT * FROM [Table B]) AS piv
UNPIVOT 
    ([Entry No.] FOR values IN (Begin, End)) AS unpvt

有没有更好的方法来做到这一点?如果没有,您能帮我解决如何“扩展”表 B 吗?

【问题讨论】:

    标签: sql sql-server tsql join ssms


    【解决方案1】:

    使用JOIN:

    select a.*, b.*
    from a join
         b
         on a.entry_no between b.begin_entry and b.end_entry
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多