从TestDB数据表中查询出所有月份的发生额都比101科目相应月份的发生额高的科目。请注意:TestDB中有很多科目,都有1-12月份的发生额。AccID:科目代码,Occmonth:发生额月份

文章描述了一个SQL查询过程,用于找出TestDB表中,除101科目外,哪些科目在特定月份的DebitOccur发生额高于101科目的总发生额。查询条件基于AccID、Occmonth和发生额的比较,适用于单月一条记录的情况。
摘要由CSDN通过智能技术生成

要解决这个问题,我们首先需要确定每个科目每个月的最大发生额。然后,我们将这些最大发生额与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表中只有一条记录。如果一个科目一个月份有多条记录,那么这个查询可能无法正确地比较发生额。在这种情况下,你可能需要使用更复杂的查询或者数据模型来解决问题。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz_ll9023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值