【发布时间】:2018-08-01 21:26:20
【问题描述】:
作为我处理电信数据计费工作的一部分,我从各种来源收集数据以构建准确的成本核算系统。目前,一张表从监管电子表格中获取数据,另一张表从各种定价表中获取数据——这些都是在电话号码范围内键入的,例如
Table 1 (Range, Provider, Status, Valid From, Valid To)
'0113', 'BT', 'Allocated', '2018-01-01 00:00:00', '2018-07-14 23:59:59'
'0113', 'BT2', 'Allocated', '2018-07-15 00:00:00', '2299-12-31 23:59:59'
Table 2 (Range, Price Band, Valid From, Valid To)
'0113', 'Price1', '2018-01-01 00:00:00', '2018-06-30 23:59:59'
'0113', 'Price2', '2018-07-01 00:00:00', '2299-12-31 23:59:59'
Output Table
'0113', 'BT', 'Allocated', 'Price1', '2018-01-01 00:00:00', '2018-06-30 23:59:59'
'0113', 'BT', 'Allocated', 'Price2', '2018-07-01 00:00:00', '2018-07-14 23:59:59'
'0113', 'BT2', 'Allocated', 'Price2', '2018-07-15 00:00:00', '2299-12-31 23:59:59'
现在,我可以用游标遍历第一个表,然后从第二个表中选择记录,并根据日期范围相互重叠的方式输出一系列行,但是有一种简单的方法吗这带有一条 SQL 语句和一些连接?
【问题讨论】:
-
到底在做什么?您没有向我们清楚地描述导致该输出的规则。 “基于日期范围如何重叠”并没有真正将其作为需求的定义,其中可能存在一些歧义。
标签: sql sql-server join inner-join