[亿信BI4.7] 关于if嵌套的

14660
21

baohaochuan 小试身手Lv3

发表于2019-8-27 09:57

悬赏10

已解决

楼主
if(DATETOSTR(MR_BS_MINSL.START_DATE,"yyyy")<@year,
@year,
    if(DATETOSTR(MR_BS_MINSL.START_DATE,"yyyy")=@year,
       DATETOSTR(MR_BS_MINSL.START_DATE,'yyyymm')^'-'^DATETOSTR(MR_BS_MINSL.END_DATE,'yyyymm'),
       @year^'01-'^DATETOSTR(MR_BS_MINSL.END_DATE,'yyyymm')))

我是这样嵌套的 它会报一个  inconsistent datatypes: expected NUMBER got CHAR不一致的数据类型:预期的数字得到CHAR

最近看过此主题的会员

西瓜小姐

esen_53WGZUPWBL

esen_56A69VDG7S

esen_5J3HPAXDRS

lyw852123

wjx0403

esen_51JBYX12HL

houyunfei

liuyt

esen_567YC9300X

13430212034

esen_55PDTNVU33

tanxzh

21个回答

只看楼主

缱绻 数据领袖Lv6

发表于2019-8-27 10:39

只看该作者

取消 关注该作者的回复

12#

baohaochuan 发表于 2019-8-27 10:35
因为需要三个if(条件,值1,值二),if(条件,值1,值二),if(条件,值1,值二) ...

那就嵌套3个if呀。或者用case when试试

baohaochuan 小试身手Lv3

发表于2019-8-27 10:43

只看该作者

取消 关注该作者的回复

13#

缱绻 发表于 2019-8-27 10:39
那就嵌套3个if呀。或者用case when试试

CASE WHEN  不能用主题表字段那肯定完成不了,,,我的两层循环还报错呢  表格GRID2的单元格E1的表达式(if(DATETOSTR(MR_BS_MINSL.START_DATE,"yyyy") > ASSTR(@year),
ASSTR(@year),
if(DATETOSTR(MR_BS_MINSL.START_DATE,'yyyy'))=ASSTR(@year),
DATETOSTR(MR_BS_MINSL.START_DATE,'yyyymm')^'-'^DATETOSTR(MR_BS_MINSL.END_DATE,'yyyymm'), ASSTR(@year)^'01-'^DATETOSTR(MR_BS_MINSL.END_DATE,'yyyymm')))有错误:给定的参数:(字符型)无法与函数IF需要的参数列表相匹配!
函数IF需要的参数列表如下:
  变体型,变体型,变体型
  变体型,变体型

缱绻 数据领袖Lv6

发表于2019-8-27 09:57

只看该作者

取消 关注该作者的回复

14#

baohaochuan 发表于 2019-8-27 10:43
CASE WHEN  不能用主题表字段那肯定完成不了,,,我的两层循环还报错呢  表格GRID2的单元格E1的表达式(i ...

多了个右括号  这个试试if(DATETOSTR(MR_BS_MINSL.START_DATE,"yyyy") > ASSTR(@year),
ASSTR(@year),
if(DATETOSTR(MR_BS_MINSL.START_DATE,'yyyy')=ASSTR(@year),
DATETOSTR(MR_BS_MINSL.START_DATE,'yyyymm')^'-'^DATETOSTR(MR_BS_MINSL.END_DATE,'yyyymm'), ASSTR(@year)^'01-'^DATETOSTR(MR_BS_MINSL.END_DATE,'yyyymm')))

baohaochuan 小试身手Lv3

发表于2019-8-27 11:05

只看该作者

取消 关注该作者的回复

15#

缱绻 发表于 2019-8-27 10:47
多了个右括号  这个试试if(DATETOSTR(MR_BS_MINSL.START_DATE,"yyyy") > ASSTR(@year),
ASSTR(@year),
if ...

我这个if条件,@year参数大于START_DATE了为什么走不到嵌套的那个if呢?

缱绻 数据领袖Lv6

发表于2019-8-27 11:11

只看该作者

取消 关注该作者的回复

16#

baohaochuan 发表于 2019-8-27 11:05
我这个if条件,@year参数大于START_DATE了为什么走不到嵌套的那个if呢?

看下结果表生成的SQL 是用的哪个过滤条件

baohaochuan 小试身手Lv3

发表于2019-8-27 11:36

只看该作者

取消 关注该作者的回复

17#

缱绻 发表于 2019-8-27 11:11
看下结果表生成的SQL 是用的哪个过滤条件

IF里面条件可以这样写吗???xxb.start<@bbq   and  xxb.end>@bbq

孤傲的旋律 数据达人Lv4

发表于2019-8-27 12:11

只看该作者

取消 关注该作者的回复

18#

baohaochuan 发表于 2019-8-27 11:36
IF里面条件可以这样写吗???xxb.start@bbq

应该可以 可以试试

baohaochuan 小试身手Lv3

发表于2019-8-27 14:23

只看该作者

取消 关注该作者的回复

19#


if(DATETOSTR(MR_BS_MINSL.START_DATE,"yyyy") < ASSTR((@year-1)) and  DATETOSTR(MR_BS_MINSL.END_DATE,"yyyy")  > ASSTR((@year-1)),
ASSTR((@year-1)),
if(DATETOSTR(MR_BS_MINSL.START_DATE,'yyyy')=ASSTR((@year-1)),
ASSTR((@year-1))^'01-'^DATETOSTR(MR_BS_MINSL.END_DATE,'yyyymm'),
ASSTR((@year-1))^'01-'^@year-1^DATETOSTR(MR_BS_MINSL.END_DATE,'mm')
)
)  
在这个if里我想让@year的参数-1应该怎么做

缱绻 数据领袖Lv6

发表于2019-8-27 14:36

只看该作者

取消 关注该作者的回复

20#

baohaochuan 发表于 2019-8-27 14:23
if(DATETOSTR(MR_BS_MINSL.START_DATE,"yyyy") < ASSTR((@year-1)) and  DATETOSTR(MR_BS_MINSL.END_DATE ...

od(@year,'y-1')

baohaochuan 小试身手Lv3

发表于2019-8-27 14:40

只看该作者

取消 关注该作者的回复

21#


解决了,谢谢

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号