查询语句中WHERE中的条件语句写法

     数据库中有年度、月份、销售额等数据,用以存放公司各名员工各月份的销售额 。现需要根据查询条件查询出指定年度、月份的数据之和。查询报表中设置2个参数ND、YF,其中ND代表年度,YF代表月份。

     查询语句:SELECT SUM(销售额列名) FROM 数据库表名 WHERE  条件。 

     查询语句中的“条件”用中文来解释就是:当参数YF为12时,查询所选ND年及YF月(即12月)所有员工的销售额数据之和;当YF小于12时(月份只能是1-12月),查询所选ND年上1年12月至ND年YF月所有员工的销售额数据之和。请问这个查询条件怎么写?

     感谢大神们帮忙写出来,谢谢!

SQL 笑笑宝贝 发布于 2024-11-18 17:24
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
笑笑宝贝Lv2见习互助
发布于2024-11-27 11:19

通过不断信信偿试,终于解决了,准确写法为: SELECT SUM(销售额列名) FROM 数据库表名 WHERE 1=1 ${IF(YF == '12' , " AND 年度字段 = ' " + ND + " ' AND 月份字段 = '12' " , " AND (( 年度字段 = ' " + ( ND - 1 ) + " ' AND 月份字段 = '12' ) OR ( 年度字段 = ' " + ND + " ' AND 月份字段 <= ' " + YF + " ')) ")}

非常感谢华莉星宸的指导,没有你的指导,我不可能知道如何去偿试。感谢!

最佳回答
1
华莉星宸Lv7资深互助
发布于2024-11-18 18:01

SELECT SUM(销售额列名) FROM 数据库表名 

WHERE  1=1

${if(YD=='12',"and 年度字段 = '"+ND+"'"," and 年度月份字段 >='"+CONCATENATE(ND-1,'12')+"' and 年度月份字段<='"+CONCATENATE(ND,YD)+"'")}

  • 笑笑宝贝 笑笑宝贝(提问者) 系统提示:‘CONCATENATE’:invalid identifier。 我用的是Oracle,会不会是不支持这种写法。另外,月份1-9月为单位数月份,在语句中是不是需要转化为俩位数月份呢?如2024年1月转化为202401月。这个语句我不太会,请帮忙写好,非常感谢!
    2024-11-19 11:07 
  • 笑笑宝贝 笑笑宝贝(提问者) 还有一个,当YF为12时,上面的语句 ${if(YD=='12',"and 年度字段 = '"+ND+"'", 是不是要增加 月份字段名=12 这样的条件?
    2024-11-19 11:10 
  • 华莉星宸 华莉星宸 回复 笑笑宝贝(提问者) 那你参数直接用年月格式,比如2024-11 这种格式,不要年度和月度分开。要不要增加条件,要根据你的实际需求哈。格式就是上面这种。CONCATENATE这个是fr里面的函数,在报表运行是可以的,你要直接放到数据估计是不行,就是字符串拼接的函数。
    2024-11-19 11:15 
  • 笑笑宝贝 笑笑宝贝(提问者) 回复 华莉星宸 通过不断信信偿试,终于解决了,准确写法为: SELECT SUM(销售额列名) FROM 数据库表名 WHERE 1=1 ${IF(YF == '12' , " AND 年度字段 = ' " + ND + " ' AND 月份字段 = '12' " , " AND (( 年度字段 = ' " + ( ND - 1 ) + " ' AND 月份字段 = '12' ) OR ( 年度字段 = ' " + ND + " ' AND 月份字段 <= ' " + YF + " ')) ")}
    2024-11-27 11:17 
  • 1关注人数
  • 119浏览人数
  • 最后回答于:2024-11-27 11:19
    请选择关闭问题的原因
    确定 取消
    返回顶部