我现在有个数据表,网页上可选定义{ed_xmzt}的值 可以自己输入成中文 比如为(完成)、(未完成)、(全部)三个条件可选。在数据库中函数ord_status的值可能是 (填写完毕)、(待审核)、(审核中)、(审核完成)、(变更完成)。我想要做到以{ed_xmzt}来做判断查询。
当{ed_xmzt}为(全部)时,查询ord_status的值为任意的所有数据。
当{ed_xmzt}为(未完成)时,查询ord_status的值为 (填写完毕)、(待审核)、(审核中) 的所有数据。
当{ed_xmzt}为(完成)时,查询ord_status的值为 ( 审核完成 ) 的所有数据。
但是我的写法如下,报错,大大们指教下。谢过(case when {ed_xmzt}='完成' then ord_status=' 审核完成 ' or ord_status=' 变更完成 ' when {ed_xmzt}='未完成' then ord_status<>' 审核完成 ' and ord_status<>' 变更完成 ' else ord_status<>'全部' end)
当{ed_xmzt}为(全部)时,查询ord_status的值为任意的所有数据。
当{ed_xmzt}为(未完成)时,查询ord_status的值为 (填写完毕)、(待审核)、(审核中) 的所有数据。
当{ed_xmzt}为(完成)时,查询ord_status的值为 ( 审核完成 ) 的所有数据。
但是我的写法如下,报错,大大们指教下。谢过(case when {ed_xmzt}='完成' then ord_status=' 审核完成 ' or ord_status=' 变更完成 ' when {ed_xmzt}='未完成' then ord_status<>' 审核完成 ' and ord_status<>' 变更完成 ' else ord_status<>'全部' end)
CASE ord_status WHEN '审核完成' THEN '完成'
WHEN '填写完毕' THEN '未完成',
WHEN '待审核' THEN '未完成',
WHEN '审核中' THEN '未完成',
ELSE '全部'
END
大大 那{ed_xmzt}没有在这里面出现啊,我是通过网页定义的这个数据。在你的列子上没出现他。那怎么判断我在选择{ed_xmzt}的时候是用的那个数据呢。谢谢大大
大大 那{ed_xmzt}没有在这里面出现啊,我是通过网页定义的这个数据。在你的列子上没出现他。那怎么判断我在选择{ed_xmzt}的时候是用的那个数据呢。谢谢大大
select .... from TB
where {ed_xmzt} = CASE ord_status WHEN '审核完成' THEN '完成'
WHEN '填写完毕' THEN '未完成',
WHEN '待审核' THEN '未完成',
WHEN '审核中' THEN '未完成',
ELSE '全部'
END放前面判断即可
else '未知' end) or
('{ed_xmzt}' = case when ord_status<>'立项已完成' and ord_status<>'变更已完成' then '立项未完成(变更未完成)'
else '未知' end) or
('{ed_xmzt}' = case when ord_status<>'全部' then '全部'
else '未知' end))
大大 那{ed_xmzt}没有在这里面出现啊,我是通过网页定义的这个数据。在你的列子上没出现他。那怎么判断我在选择{ed_xmzt}的时候是用的那个数据呢。谢谢大大
select .... from TB
where {ed_xmzt} = CASE ord_status WHEN '审核完成' THEN '完成'
WHEN '填写完毕' THEN '未完成',
WHEN '待审核' THEN '未完成',
WHEN '审核中' THEN '未完成',
ELSE '全部'
END放前面判断即可
用了大大地方法,结果基本对了,不知道怎么回事,我的数据库只支持 case when 两次判断,第三个设定判断不其效果,最后只能写成这样了 (('{ed_xmzt}' = case when ord_status='立项已完成' or ord_status='变更已完成' then '立项已完成(变更已完成)'
else '未知' end) or
('{ed_xmzt}' = case when ord_status<>'立项已完成' and ord_status<>'变更已完成' then '立项未完成(变更未完成)'
else '未知' end) or
('{ed_xmzt}' = case when ord_status<>'全部' then '全部'
else '未知' end))
这样的
('{ed_xmzt}' = case when ord_status='立项已完成' or ord_status='变更已完成' then '立项已完成(变更已完成)'
when ord_status<>'立项已完成' or ord_status<>'变更已完成' then '立项未完成(变更未完成)'
when ord_status<>'全部' then '全部'
else '未知' end)上面的语句,第三个when不管放谁,都没有任何结果输出。
这样的
('{ed_xmzt}' = case when ord_status='立项已完成' or ord_status='变更已完成' then '立项已完成(变更已完成)'
when ord_status<>'立项已完成' and ord_status<>'变更已完成' then '立项未完成(变更未完成)'
when ord_status<>'全部' then '全部'
else '未知' end)上面的语句,第三个when不管放谁,都没有任何结果输出。
有个地方OR写错了,应该是and
我的ord_status状态非常多,所以我用的ord_status最后一个状态来判定他是真或者假的状态。当{ed_xmzt}'=真的时候,ord_status也是真,当{ed_xmzt}'=假的时候,那么ord_status我就需要把他真的值给剔除掉,那么留下的就是其他N个假值,当我{ed_xmzt}'=未知的时候,我就需要不进行ord_status的判断,把ord_status值得说有数据罗列出来。
我的ord_status状态非常多,所以我用的ord_status最后一个状态来判定他是真或者假的状态。当{ed_xmzt}'=真的时候,ord_status也是真,当{ed_xmzt}'=假的时候,那么ord_status我就需要把他真的值给剔除掉,那么留下的就是其他N个假值,当我{ed_xmzt}'=未知的时候,我就需要不进行ord_status的判断,把ord_status值得说有数据罗列出来。其实最后的ord_status<>'全部'是欺骗系统,因为ord_status太多了,唯独没有=全部,所以我欺骗系统,只要不等于他,我就全部呈现。
上面的三条when语言,顺序随便怎么放,唯独第三条不起效果。搞不懂了。这里感谢版大看我贴哦。
('{ed_xmzt}' = case when ord_status='立项已完成' or ord_status='变更已完成' then '立项已完成(变更已完成)'
when ord_status<>'立项已完成' or ord_status<>'变更已完成' then '立项未完成(变更未完成)'
else '全部' end)