关于SQL中加入if条件查询的操作

下面这两种情况,不知道这个if应该怎么写?

请教各位。


有3个参数${month}开始月,${month1}结束月,${year}年份


1、如果 ${month1} = 12,那么【select pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45

from wa_data a where a.cperiod between '${month}'and '12' and a.cyear = '${year}'and pk_wa_class ='1001A11000000000155V'

union

select  pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45

from wa_data a where a.cperiod between '${month}'and '12' and a.cyear = '${year}'and pk_wa_class ='1001A11000000000436F'

union

select  pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45

from wa_data a where a.cperiod = '01' and a.cyear = '${year}'+1

and pk_wa_class ='1001A11000000000153U'

union

select pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45

from wa_data a where a.cperiod = '01' and a.cyear = '${year}'+1

and pk_wa_class ='1001A11000000000155V

 

 

2、如果${month1}<>12,那么【select pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45

from wa_data a where a.cperiod between '${month}'and '${month1}' and a.cyear = '${month}'

and pk_wa_class ='1001A11000000000155V'

union

select  pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45

from wa_data a where a.cperiod between '${month}'and '${month1}' and a.cyear = '${year}'

and pk_wa_class ='1001A11000000000436F'

8.png


FineReport has_100 发布于 2021-1-23 10:09
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
krystal033Lv7高级互助
发布于2021-1-23 10:17(编辑于 2021-1-23 10:32)

建议你先两个数据集 然后通过参数 写条件属性空值其中一条数据集的数据不显示

一定要写在一个数据集的话参考一下这个回答

https://bbs.fanruan.com/wenda/question/17179.html 

${if(month1=12,"第一句语句","第二句语句")}


  • has_100 has_100(提问者) Switch的方法好像不太适用。 两个数据集的方法是怎么做,情况1、2只是整个查询中的一部分。
    2021-01-23 10:31 
  • krystal033 krystal033 回复 has_100(提问者) 改了 你看我上面的写法就好了 第一句表示当等于12的时候的语句 第二句语句是不是12的时候的语句
    2021-01-23 10:33 
  • has_100 has_100(提问者) 回复 krystal033 好的,谢谢,我尝试一下
    2021-01-23 10:37 
最佳回答
0
qhlLv6中级互助
发布于2021-1-23 10:33
${if(month1=12,
"SELECT 
	pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45
FROM
	wa_data a 
WHERE
	a.cperiod BETWEEN '"+month+"' 
	AND '12' 
	AND a.cyear = '"+year+"' 
	AND pk_wa_class = '1001A11000000000155V'
UNION
SELECT 
	pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45
FROM
	wa_data a 
WHERE
	a.cperiod BETWEEN '"+month+"' 
	AND '12' 
	AND a.cyear = '"+year+"' 
	AND pk_wa_class = '1001A11000000000436F' 
UNION
SELECT
	pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45
FROM
	wa_data a 
WHERE
	a.cperiod = '01' 
	AND a.cyear = '"+year+"' + 1 
	AND pk_wa_class = '1001A11000000000153U' 
UNION
SELECT
	pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45
FROM
	wa_data a 
WHERE
	a.cperiod = '01' 
	AND a.cyear = '"+year+"' + 1 
	AND pk_wa_class = '1001A11000000000155V'"
	,
	"SELECT
	pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45
FROM
	wa_data a 
WHERE
	a.cperiod BETWEEN '"+month+"' 
	AND '"+month1+"' 
	AND a.cyear = '"+month+"' 
	AND pk_wa_class = '1001A11000000000155V' 
UNION
SELECT
	pk_psndoc,f_1,f_190,f_31,f_39,f_40,f_41,f_42,f_43,f_44,f_45
FROM
	wa_data a 
WHERE
	a.cperiod BETWEEN '"+month+"' 
	AND '"+month1+"' 
	AND a.cyear = '"+year+"' 
	AND pk_wa_class = '1001A11000000000436F'"
	)}


  • has_100 has_100(提问者) 好的,谢谢,我尝试一下
    2021-01-23 10:37 
  • qhl qhl 回复 has_100(提问者) 好的
    2021-01-23 10:45 
  • 3关注人数
  • 1057浏览人数
  • 最后回答于:2021-1-23 10:33
    请选择关闭问题的原因
    确定 取消
    返回顶部