SQL 服务器:扩大范围以包括缺失的行
SQL Server : expand range to include missing rows
我有一个 table (A),其中 PK 是一个整数:
Entry No. Date Product
-------------------------------
10001 1/1/19 Jeans
10002 1/1/19 Shoes
10003 2/1/19 Jeans...
我有另一个 table (B),示例数据如下(所有值均为整数):
ID Begin End
-------------------
1 10001 10003
2 10004 10007
3 10008 10019...
我需要为 table A 中的每个 [Entry No.] 在 table B 中找到 [ID]。
我认为这需要旋转 table B 所以 [Begin] 和 [End] 在同一列然后 'expanding' 行所以每个 int 都有一行:
ID Entry No.
-------------
1 10001
1 10002
1 10003
2 10004
2 10005
2 10006
2 10007
3 10008...
然后我可以在 [Table A] 上加入 Table A。[条目号] = [Table B].[Entry.No.]
我的反透视代码:
SELECT
ID, [Entry No.]
FROM
(SELECT * FROM [Table B]) AS piv
UNPIVOT
([Entry No.] FOR values IN (Begin, End)) AS unpvt
有更好的方法吗?如果没有,你能帮我看看如何 'expand' table B?
使用JOIN
:
select a.*, b.*
from a join
b
on a.entry_no between b.begin_entry and b.end_entry
我有一个 table (A),其中 PK 是一个整数:
Entry No. Date Product
-------------------------------
10001 1/1/19 Jeans
10002 1/1/19 Shoes
10003 2/1/19 Jeans...
我有另一个 table (B),示例数据如下(所有值均为整数):
ID Begin End
-------------------
1 10001 10003
2 10004 10007
3 10008 10019...
我需要为 table A 中的每个 [Entry No.] 在 table B 中找到 [ID]。
我认为这需要旋转 table B 所以 [Begin] 和 [End] 在同一列然后 'expanding' 行所以每个 int 都有一行:
ID Entry No.
-------------
1 10001
1 10002
1 10003
2 10004
2 10005
2 10006
2 10007
3 10008...
然后我可以在 [Table A] 上加入 Table A。[条目号] = [Table B].[Entry.No.]
我的反透视代码:
SELECT
ID, [Entry No.]
FROM
(SELECT * FROM [Table B]) AS piv
UNPIVOT
([Entry No.] FOR values IN (Begin, End)) AS unpvt
有更好的方法吗?如果没有,你能帮我看看如何 'expand' table B?
使用JOIN
:
select a.*, b.*
from a join
b
on a.entry_no between b.begin_entry and b.end_entry