计数日期在一秒内出现在两个日期之间的次数 table
Count times date occurs between two dates in a second table
我有两个 tables [Charges] 和 [Defects] 并且想要生成 [Desired Query Output],其中当 [Charges].ChargeDate 介于(包括)之间时,输出计算缺陷的发生次数[缺陷].OpenDate 和 [缺陷].CloseDate。对于 [Defects] table,关闭日期为 NULL 表示它尚未关闭。看起来很简单,但我还没有找到一个很好的例子来说明如何做到这一点。你能帮忙吗??
我正在使用 SQL 服务器版本 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
您可以使用相关子查询或横向连接:
select
c.*,
(
select count(*)
from defects d
where
d.order = c.order
and c.ChargeDate >= d.OpenDate
and (d.CloseDate is null or c.ChargeDate <= d.CloseDate)
) as DefectCnt
from charges c
我有两个 tables [Charges] 和 [Defects] 并且想要生成 [Desired Query Output],其中当 [Charges].ChargeDate 介于(包括)之间时,输出计算缺陷的发生次数[缺陷].OpenDate 和 [缺陷].CloseDate。对于 [Defects] table,关闭日期为 NULL 表示它尚未关闭。看起来很简单,但我还没有找到一个很好的例子来说明如何做到这一点。你能帮忙吗??
我正在使用 SQL 服务器版本 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
您可以使用相关子查询或横向连接:
select
c.*,
(
select count(*)
from defects d
where
d.order = c.order
and c.ChargeDate >= d.OpenDate
and (d.CloseDate is null or c.ChargeDate <= d.CloseDate)
) as DefectCnt
from charges c