修改SQL

select
sum(m.deal_qty)/count(m.deal_qty) as a,
sum(m.aveprice_amt)/count(m.aveprice_amt) as b,
t.short_str,
m.month_date
from dc_market_tproj_f m left join dc_tproject_d t on m.proj_id = t.proj_id
where m.proj_id = '5DA8C46D-FF8A-4E7B-A36B-579A1F353BC2'
and left(m.month_date,4) = convert(varchar(7),DATEADD(mm, -13, GETDATE()),120)
group by month_date,short_str
union all
select
sum(f.deal_qty)/count(f.deal_qty) as a,
sum(f.aveprice_amt)/count(f.aveprice_amt) as b,
'竞品平均' 'short_str',
f.month_date
from dc_cproject_form_d f
left join dc_cproject_d c on f.proj_id = c.proj_id
where c.tproj_id = '5DA8C46D-FF8A-4E7B-A36B-579A1F353BC2'
and left(f.month_date,4) = convert(varchar(7),DATEADD(mm, -13, GETDATE()),120)
group by month_date
union all
select
sum(f.deal_qty)/count(f.deal_qty) as a,
sum(f.aveprice_amt)/count(f.aveprice_amt) as b,
c.proj_str 'short_str',
f.month_date
from dc_cproject_form_d f
left join dc_cproject_d c on f.proj_id = c.proj_id
where c.proj_str = '${B4}'
and month_date >= convert(varchar(7),DATEADD(mm, -13, GETDATE()),120)
group by month_date,proj_str


怎么在'${B4}'有值的时候使union的第二段失效?

孟祥运 发布于 2019-2-26 21:22
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
1269186421Lv3见习互助
发布于2019-2-26 22:08

if '${B4}' is not null 

sql1

union

sql3


else


sql1

union

sql2

union

sql3

当然这样写语句会很长。


  • 孟祥运 孟祥运(提问者) 卧槽,帆软里面判断不了is null,我改成了 if (len(\'${B4}\')=0 (SQL1 union all SQL2) else (SQL1 union all SQL2) 正确了,谢谢
    2019-02-27 10:43 
  • 1269186421 1269186421 回复 孟祥运(提问者) 好的呢,一起加油。
    2019-02-27 17:53 
最佳回答
0
邵天木Lv5见习互助
发布于2019-2-27 00:14

sql1

${if(len(B4)=0,"union all sql2","")}

union all

sql3 

在帆软的数据集里输入sql语句时可以用将if函数包含在${}中 将整个if函数当成一个参数,当B4为空时执行sql2,不为空时替换成空格。

具体可参照if函数用法文档。

  • 孟祥运 孟祥运(提问者) \"\"里写select一直报错,用了别的方法,谢谢提供思路
    2019-02-27 10:44 
  • 3关注人数
  • 887浏览人数
  • 最后回答于:2019-2-27 00:14
    请选择关闭问题的原因
    确定 取消
    返回顶部