sql - SQL Server:扩大范围以包括缺失的行
问题描述
我有一个表(A),其中 PK 是一个 int:
Entry No. Date Product
-------------------------------
10001 1/1/19 Jeans
10002 1/1/19 Shoes
10003 2/1/19 Jeans...
我有另一个表(B),下面有示例数据(所有值都是整数):
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 吗?
解决方案
使用JOIN
:
select a.*, b.*
from a join
b
on a.entry_no between b.begin_entry and b.end_entry
推荐阅读
- spring - 是否可以在 k8s configMaps 中进行参数替换?
- python-3.x - 如何从 np.where() 而不是 True/False 获取单元格的值
- r - ggplot2 图例标题不尊重 Google 字体的粗体
- reactjs - 如何在 Ant Design Form 中使用 async onFinish 方法
- firebase - Firebase SwiftUI and Firebase Auth - not reading user ID?
- gradle - Gradle 如何自动更新依赖的版本?
- scala - Spark - 从数组对象中选择多列
- debugging - 通过 UART 将缓冲区作为 USB 数据发送到 VCP 时无法访问内存位置
- python - 为什么硬编码的 url 有效,但 Django 中的名称空间 url 无效?
- java - 如何获取可启动应用程序的列表?