帮我分析哈!谢谢

2011-02-16  简德成 

(CASE WHEN A.ENT_ACT_TYP_CD IS NOT NULL AND A.ENT_ACT_TYP_CD<>'' AND A.REL_ENT_NUM IS NOT NULL AND A.REL_ENT_NUM <>''
                THEN A.REL_ENT_NUM
                ELSE (CASE WHEN A.BUS_TYP_CD IN('10010015') THEN A.DRW_ACT ELSE A.PYE_ACT END)
           END =B.CRD_NUM
case when ...then....else...(case when ...then... else...)双嵌套,
当A.ENT_ACT_TYP_CD IS NOT NULL 和 A.REL_ENT_NUM IS NOT NULL 成立,
则A.REL_ENT_NUM  =B.CRD_NUM
若不成立,
则。。。。
 分开我能分析,但嵌套后,余下怎么分析?
 请指教!!
 谢谢!
          
361°/3562 人阅读/5 条评论 发表评论

简德成  2011-02-16

若不成立,难道是 ELSE (CASE WHEN A.BUS_TYP_CD IN('10010015') THEN A.DRW_ACT ELSE A.PYE_ACT END) 此条件成立,则A.DRW_ACT =B.CRD_NUM,不成立则A.DRW_ACT=A.PYE_ACT ,不知是否正确,请指教!


曾晨  2011-02-17

前面的好看  我给楼主拆一下楼主就知道什么意思了
如果A.BUS_TYP_CD IN('10010015')成立,SQL语句为
(CASE WHEN A.ENT_ACT_TYP_CD IS NOT NULL AND A.ENT_ACT_TYP_CD<>'' AND A.REL_ENT_NUM IS NOT NULL AND A.REL_ENT_NUM <>''
                THEN A.REL_ENT_NUM
                ELSE A.DRW_ACT END)
           END)=B.CRD_NUM
我们先将此SQL语句定义为strSQL1
若A.BUS_TYP_CD IN('10010015')不成立,SQL语句为
A.BUS_TYP_CD IN('10010015')成立,SQL语句为
(CASE WHEN A.ENT_ACT_TYP_CD IS NOT NULL AND A.ENT_ACT_TYP_CD<>'' AND A.REL_ENT_NUM IS NOT NULL AND A.REL_ENT_NUM <>''
                THEN A.REL_ENT_NUM
                ELSE A.PYE_ACT END)
           END)=B.CRD_NUM
我们将此SQL语句定义为strSQL2


曾晨  2011-02-17

上面看懂了的话那我就开始拆了
第一种情况:若A.ENT_ACT_TYP_CD IS NOT NULL AND A.ENT_ACT_TYP_CD<>'' AND A.REL_ENT_NUM IS NOT NULL AND A.REL_ENT_NUM <>'' 条件成立,结果为:A.REL_ENT_NUM = B.CRD_NUM
第二种情况:若A.ENT_ACT_TYP_CD IS NOT NULL AND A.ENT_ACT_TYP_CD<>'' AND A.REL_ENT_NUM IS NOT NULL AND A.REL_ENT_NUM <>'' 条件不成立且A.BUS_TYP_CD IN('10010015')成立,那么结果为A.DRW_ACT = B.CRD_NUM
第三种情况:若A.ENT_ACT_TYP_CD IS NOT NULL AND A.ENT_ACT_TYP_CD<>'' AND A.REL_ENT_NUM IS NOT NULL AND A.REL_ENT_NUM <>'' 条件不成立且A.BUS_TYP_CD IN('10010015')不成立,那么结果为 A.PYE_ACT END =B.CRD_NUM


曾晨  2011-02-17

楼主的这种比较少见,一般都是变量在前面的,跑后面去=就不太看明白什么意思了


简德成  2011-02-18

曾晨: 楼主的这种比较少见,一般都是变量在前面的,跑后面去=就不太看明白什么意思了
谢谢!!


登录 后发表评论