我无法思考这个问题。 问题的确切措辞是(编辑)......忘了上半场:
仅考虑Income_o和Outcome_o表。众所周知,周日没有进行金钱操作。 对于每个积分的每个接收日期,请按以下规则确定收款日期: 1.收集日期等于接收日期(收入),如果此时此日期的货款交付表Outcome_o中没有条目。 2.否则,这是接收日期之后的第一个可能日期,即不是星期日,此时此时此表中的Outcome_o表中没有任何条目用于汇款。 输出:点,接收日期,汇款日期。
条目按点和日期是唯一的。
答案 0 :(得分:0)
select top 1 [date]
from income_o
where [date] > '20170301'
and [date] <= dateadd(day, 7, '20170301')
and datepart(weekday, [date]) <> 0
and not exists(select *
from outcome_o
where outcome_o.point = income_o.point
and outcome_o.[date] = income_o.[date])
order by [date];
鉴于周一是工作日,系统上没有1。
答案 1 :(得分:0)
我修改了我的答案以包含你的答案。我相信这包括您指定的限制/规则。
select I.point, I.[date] O.date
from income_o I
JOIN outcome_o O ON I.point = O.point
WHERE O.[date] >= I.[date]
and O.date = (select top O2.[date] from outcome_o O2
where O2.point = I.point
and datepart(dw, O2.[date]) <> 1
)
order by I.point, I.[date];