我有一个包含以下列的表:
从 至 WorkQuota
现在我需要具有重叠日期的工作配额的总和。执行sql查询后,如果总和大于100,我将检查我的应用程序。
是否可以在SQL中执行此操作?
提前致谢
西瓦
编辑:
我需要从重叠的记录中得到工作配额的总和。但我认为这不可能像SQL那样。
示例:
Feb1-Feb3 80% - Feb2-Feb4 30% - >这应该在我的结果中显示为110%,因为它重叠且超过100%。
2月10日 - 2月12日50% - 2月14日 - 2月15日20% - 2月16日 - 2月18日100% - 我不在乎因为日期不重叠
2月20日 - 2月24日50% - 2月21日 - 2月22日20% - 我不在乎,因为工作配额低于100%
答案 0 :(得分:0)
您可以使用此查询来获取输出:
SELECT t1.From ,t1.To, SUM(t1.WorkQuota) FROM TABLE t1 inner join TABLE t2 on t1.FROM = t2.TO GROUP BY t1.FROM,t1.To;
答案 1 :(得分:0)
我认为不可能一步到位。所以我写了一个函数来检查日期是否重叠:
'Testing Function CheckDatesOverlap
Private Sub Command1_Click()
Dim dFrom1, dTo1, dFrom2, dTo2 As Date
'Init Date
dFrom2 = CDate("01.01.2000")
dTo2 = CDate("01.01.2010")
'There are 4 possibilities
'Possibility 1:
dFrom1 = CDate("01.01.1995")
dTo1 = CDate("01.01.2005")
If CheckDatesOverlap(dFrom1, dTo1, dFrom2, dTo2) Then
MsgBox "Success"
End If
'Possibility 2:
dFrom1 = CDate("01.01.2005")
dTo1 = CDate("01.01.2015")
If CheckDatesOverlap(dFrom1, dTo1, dFrom2, dTo2) Then
MsgBox "Success"
End If
'Possibility 3:
dFrom1 = CDate("01.01.2004")
dTo1 = CDate("01.01.2008")
If CheckDatesOverlap(dFrom1, dTo1, dFrom2, dTo2) Then
MsgBox "Success"
End If
'Possibility 4:
dFrom1 = CDate("01.01.1995")
dTo1 = CDate("01.01.2015")
If CheckDatesOverlap(dFrom1, dTo1, dFrom2, dTo2) Then
MsgBox "Success"
End If
End Sub
Public Function CheckDatesOverlap(ByVal dFrom1 As Date, ByVal dTo1 As Date, ByVal dFrom2 As Date, ByVal dTo2 As Date) As Boolean
If (dFrom1 >= dFrom2 And dFrom1 <= dTo2) Or (dTo1 >= dFrom2 And dTo1 <= dTo2) Or (dFrom1 < dFrom2 And dTo1 > dTo2) Then
CheckDatesOverlap = True
End If
End Function
如果sombody在我的问题中知道SQL的解决方案,我将非常感激。否则我希望我可以帮助某人。