要解决这个问题,我们首先需要确定每个科目每个月的最大发生额。然后,我们将这些最大发生额与101科目相应月份的发生额进行比较。如果某个科目的某个月份的发生额高于101科目的发生额,那么我们就将这个科目标记为符合条件的科目。
首先,我们假设数据库中每个科目每个月的发生额存储在TestDB表中的AccID和Occmonth字段中。我们需要查询的科目是101,所以我们要查找所有其他科目在每个月份的发生额是否高于101科目的发生额。
以下是一个可能的SQL查询来解决这个问题:
sql
SELECT AccID, Occmonth, DebitOccur
FROM TestDB
WHERE (AccID <> '101' AND Occmonth IN (SELECT Occmonth FROM TestDB WHERE AccID = '101'))
GROUP BY AccID, Occmonth, DebitOccur
HAVING SUM(DebitOccur) > (SELECT SUM(DebitOccur) FROM TestDB WHERE AccID = '101' AND Occmonth = t.Occmonth)
这个查询首先筛选出所有AccID不等于'101'的记录,并且Occmonth是'101'科目所有Occmonth中的一个。然后,我们按照AccID、Occmonth和DebitOccur进行分组,并使用HAVING子句筛选出那些DebitOccur的总和大于'101'科目相应月份DebitOccur的记录。
注意:这个查询假设每个科目每个月的发生额在TestDB表中只有一条记录。如果一个科目一个月份有多条记录,那么这个查询可能无法正确地比较发生额。在这种情况下,你可能需要使用更复杂的查询或者数据模型来解决问题。