SQL查询数据,并对指定字段进行求和! 30
具体问题已在图片中说明清楚,请有时间并且对SQL语方比较熟悉的朋友给个好的建议,非常感谢!图片里面代码怕大家看不清,在这里再发一次!(主要是对“sql=”后面这段代码给个...
具体问题已在图片中说明清楚,请有时间并且对SQL语方比较熟悉的朋友给个好的建议,非常感谢!
图片里面代码怕大家看不清,在这里再发一次!(主要是对“sql= ”后面这段代码给个建议)
sq1 = "Select BU,AsofYear,Period,Currency,Account,Description_Acc,Department,Description_Dept,Affiliate,Description_Affi,Activity,Description_Act,SUM(Beginning_Balance),SUM(Debit) as Debit,SUM(Credit) as Credit,SUM(Ending_Balance) from data where BU LIKE '%" & "CN" & "%' group by BU,AsofYear,Period,Currency,Account,Description_Acc,Department,Description_Dept,Affiliate,Description_Affi,Activity,Description_Act" 展开
图片里面代码怕大家看不清,在这里再发一次!(主要是对“sql= ”后面这段代码给个建议)
sq1 = "Select BU,AsofYear,Period,Currency,Account,Description_Acc,Department,Description_Dept,Affiliate,Description_Affi,Activity,Description_Act,SUM(Beginning_Balance),SUM(Debit) as Debit,SUM(Credit) as Credit,SUM(Ending_Balance) from data where BU LIKE '%" & "CN" & "%' group by BU,AsofYear,Period,Currency,Account,Description_Acc,Department,Description_Dept,Affiliate,Description_Affi,Activity,Description_Act" 展开
1个回答
展开全部
问个问题,你现在求得是1-2月,所以是1月求N列,2月求Q列,那么如果你要求的是1-7月,那么是不是1月求N列,7月求Q列,中间的N列和Q列还求么?
如果不求,那么可以用union all+max+嵌套查询,就是先union 查出一个 1月的N列,其他OPQ列制0,七月也这样处理,Q列合并,其他值制0,全部的是OP列合并,NQ制0,然后在外面再嵌套一层group 再求max。(不过这个方法太麻烦了,效率肯定慢的吓死人)而且得不偿失。
另外一个办法,能想到的就是编函数(个人估计要便三个,一个起始月的,一个全部group by的,还有一个结束月的,一个函数也行,不过输出的结果就要用table的格式存了。),其实和上面的写法差不多,就是你输入你的起始月和结束月,然后在过程中去执行上面写得那个过程,只不过你可以把过程拆开,这样就能控制了,你如起始月的时候计算N列,结束月的时候计算Q列,然后在大于等于和小于等于的时候计算O和P列(不用循环直接两个数就行),然后输出。(这个似乎好控制一些。写过程也行,单纯的sql,没办法判断最大值和最小值,就算能判断,也要嵌套好几层,肯定很慢)
如果不求,那么可以用union all+max+嵌套查询,就是先union 查出一个 1月的N列,其他OPQ列制0,七月也这样处理,Q列合并,其他值制0,全部的是OP列合并,NQ制0,然后在外面再嵌套一层group 再求max。(不过这个方法太麻烦了,效率肯定慢的吓死人)而且得不偿失。
另外一个办法,能想到的就是编函数(个人估计要便三个,一个起始月的,一个全部group by的,还有一个结束月的,一个函数也行,不过输出的结果就要用table的格式存了。),其实和上面的写法差不多,就是你输入你的起始月和结束月,然后在过程中去执行上面写得那个过程,只不过你可以把过程拆开,这样就能控制了,你如起始月的时候计算N列,结束月的时候计算Q列,然后在大于等于和小于等于的时候计算O和P列(不用循环直接两个数就行),然后输出。(这个似乎好控制一些。写过程也行,单纯的sql,没办法判断最大值和最小值,就算能判断,也要嵌套好几层,肯定很慢)
追问
1-7月话,O、P列需要全部求和
追答
所以我说的是分成三块,一块是1月求N列,一块是1-7月求op列,一块是7月求Q列,我只能给个思路,一条sql是完不成的。除非用第二种办法,就是写函数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询