【发布时间】:2020-11-13 08:46:08
【问题描述】:
我有两个表 [Charges] 和 [Defects],并且想要生成 [Desired Query Output],其中当 [Charges].ChargeDate 介于(并包括)[Defects].OpenDate 和 [缺陷].CloseDate。对于 [Defects] 表,NULL 的关闭日期表示它尚未关闭。看起来很简单,但我还没有找到一个很好的例子来说明如何做到这一点。你能帮忙吗??
我使用的是 SQL Server 版本 12。
[收费]
Order Charge ChargeDate
1 1.2 07/10/2020
1 0.6 07/15/2020
6 0.002 07/20/2020
8 0.13 07/01/2020
8 1.1 06/18/2020
8 0.3 06/19/2020
10 2.3 06/24/2020
[缺陷]
Order DefectID OpenDate CloseDate
1 25 06/01/2020 NULL
1 27 07/09/2020 07/12/2020
1 30 05/01/2020 07/20/2020
8 45 06/19/2020 06/19/2020
8 47 06/12/2020 07/05/2020
8 48 06/19/2020 NULL
10 49 06/24/2020 NULL
[期望的查询输出]
Order Charge ChargeDate DefectCnt
1 1.2 07/10/2020 3
1 0.6 07/15/2020 2
6 0.002 07/20/2020 0
8 0.13 07/01/2020 2
8 1.1 06/18/2020 1
8 0.3 06/19/2020 3
10 2.3 06/24/2020 1
【问题讨论】:
-
数据有多大?性能有多重要?
-
它在 40,860 行上执行。它用于分析报告,因此根据其他不相关的因素,性能可能变得至关重要。不到 1 秒可能没问题。
标签: sql sql-server join sql-server-2012 subquery