microsoft visual foxpro sql中如何写case when?

sweetBug 2009-08-24 02:35:20
如上,我想在microsoft visual foxpro的命令窗口中执行以下SQL

select a.aac002,a.aac003,case when a.yeclfs = '1' then a.yelqje else null end as aac063 from yzd11 a

报错:
命令中含有不能识别的短语或关键字.
这个含有case的sql应该怎么写?
...全文
623 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
sweetBug 2009-08-24
  • 打赏
  • 举报
回复
谢谢各位!
gw6328 2009-08-24
  • 打赏
  • 举报
回复
VF全忘了
sweetBug 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 sql77 的回复:]
iif(a.yeclfs = '1',LTRIM(a.yelqje) , null)这样试试
[/Quote]

还是报这个错: 无法确定SQL列的数据类型
华夏小卒 2009-08-24
  • 打赏
  • 举报
回复
这样,你加我QQ,:157410367
我试一下,呵呵,这个我来搞定,77,你去抢别的分吧
sweetBug 2009-08-24
  • 打赏
  • 举报
回复
并且,即使我把SQL写成这样:

select a.aac002, a.aac003, a.yeclfs, a.yelqje, IIf(a.yeclfs = '1', 33, 0) as aac063 from Yzd11abcdefghijklmn a

满足条件的查出来还是 aac063 为 *号, 这是为什么啊?
SQL77 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 sweetbug 的回复:]
谢谢:
引用 15 楼 sql77 的回复:
iif(a.yeclfs = '1',a.yelqje ,null)应该是楼主NULL的错误,改成数值型试试?

如果 Measures.CurrentMember 是空单元,则下面的示例返回 0,否则返回 1:

IIf(IsEmpty(Measures.CurrentMember), 0, 1)

字符串
如果 Measures.CurrentMember 是空单元,则下面的字符串返回字符串 "Yes",否则返回字符串 "No":

IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")



'iif(a.yeclfs = '1',a.yelqje ,null)应该是楼主NULL的错误,改成数值型试试?'我就是想在a.yeclfs <> '1'的时候,取一个空值,这个如何实现?

并且我想iif(a.yeclfs = '1',a.yelqje ,null)返回一个数值型,与a.yelqje的类型一致,这怎样实现呢?

[/Quote]

iif(a.yeclfs = '1',LTRIM(a.yelqje) , null)这样试试
华夏小卒 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 sql77 的回复:]
引用 17 楼 sweetbug 的回复:
不好意思,刚才重要的部分没有显示完全

楼主看一下IIF的函数的用法,如果两个是数值的话就都得是数值,应该是
iif(a.yeclfs = '1',a.yelqje ,null)
这里错误,要不然
iif(a.yeclfs = '1',LTRIM(a.yelqje) , null)
不知道函数里面能不能嵌套函数呢
[/Quote]

我试了一下,其实5楼的应该是可以的,
嵌套没关系
sweetBug 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 js_szy 的回复:]
select a.aac002,a.aac003,;
iif(a.yeclfs = '1',a.yelqje , 0) as aac063    ;
from yzd11 a


&& 把null换成0看看
[/Quote]
换成0后查出来不满足条件的变成0了,然而满足条件的成了*号了
sweetBug 2009-08-24
  • 打赏
  • 举报
回复
谢谢:
[Quote=引用 15 楼 sql77 的回复:]
iif(a.yeclfs = '1',a.yelqje ,null)应该是楼主NULL的错误,改成数值型试试?

如果 Measures.CurrentMember 是空单元,则下面的示例返回 0,否则返回 1:

IIf(IsEmpty(Measures.CurrentMember), 0, 1)

字符串
如果 Measures.CurrentMember 是空单元,则下面的字符串返回字符串 "Yes",否则返回字符串 "No":

IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")


[/Quote]
'iif(a.yeclfs = '1',a.yelqje ,null)应该是楼主NULL的错误,改成数值型试试?'我就是想在a.yeclfs <> '1'的时候,取一个空值,这个如何实现?

并且我想iif(a.yeclfs = '1',a.yelqje ,null)返回一个数值型,与a.yelqje的类型一致,这怎样实现呢?
SQL77 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sweetbug 的回复:]
不好意思,刚才重要的部分没有显示完全
[/Quote]
楼主看一下IIF的函数的用法,如果两个是数值的话就都得是数值,应该是
iif(a.yeclfs = '1',a.yelqje , null)
这里错误,要不然
iif(a.yeclfs = '1',LTRIM(a.yelqje) , null)
不知道函数里面能不能嵌套函数呢
华夏小卒 2009-08-24
  • 打赏
  • 举报
回复
select a.aac002,a.aac003,;
iif(a.yeclfs = '1',a.yelqje , 0) as aac063 ;
from yzd11 a


&& 把null换成0看看
sweetBug 2009-08-24
  • 打赏
  • 举报
回复

不好意思,刚才重要的部分没有显示完全
SQL77 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 sweetbug 的回复:]
引用 10 楼 js_szy 的回复:
引用 9 楼 sweetbug 的回复:
还请教一个问题:
iif(a.yeclfs = '1',a.yelqje , null), 当行满足a.yeclfs = '1', 本应该取a.yelqje, 查出来的值怎么成了'*'号,而a.yelqje不为'*'号?


就是因为这个值类型的问题,好有可能是INT型超界,会显示为 *


a.yeclfs这列有小数点的,VF自动转换成整型了吗?
[/Quote]
如果是整型的会将小数自动转换的
SQL77 2009-08-24
  • 打赏
  • 举报
回复
iif(a.yeclfs = '1',a.yelqje , null)应该是楼主NULL的错误,改成数值型试试?

如果 Measures.CurrentMember 是空单元,则下面的示例返回 0,否则返回 1:

IIf(IsEmpty(Measures.CurrentMember), 0, 1)

字符串
如果 Measures.CurrentMember 是空单元,则下面的字符串返回字符串 "Yes",否则返回字符串 "No":

IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")

sweetBug 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 js_szy 的回复:]
引用 9 楼 sweetbug 的回复:
还请教一个问题:
iif(a.yeclfs = '1',a.yelqje , null), 当行满足a.yeclfs = '1', 本应该取a.yelqje, 查出来的值怎么成了'*'号,而a.yelqje不为'*'号?


就是因为这个值类型的问题,好有可能是INT型超界,会显示为 *
[/Quote]

a.yeclfs这列有小数点的,VF自动转换成整型了吗?
sweetBug 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sql77 的回复:]
iif(a.yeclfs = '1',a.yelqje , null)这个是什么类型呀无法确定列类型?
[/Quote]

a.yelqje 的类型是数值型的, 为什么查到满足条件的记录变成*号了?
SQL77 2009-08-24
  • 打赏
  • 举报
回复
iif(a.yeclfs = '1',a.yelqje , null)这个是什么类型呀无法确定列类型?
sweetBug 2009-08-24
  • 打赏
  • 举报
回复

这里有图片,大侠们帮我看看!
华夏小卒 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sweetbug 的回复:]
还请教一个问题:
iif(a.yeclfs = '1',a.yelqje , null), 当行满足a.yeclfs = '1', 本应该取a.yelqje, 查出来的值怎么成了'*'号,而a.yelqje不为'*'号?
[/Quote]

就是因为这个值类型的问题,好有可能是INT型超界,会显示为 *
sweetBug 2009-08-24
  • 打赏
  • 举报
回复
还请教一个问题:
iif(a.yeclfs = '1',a.yelqje , null), 当行满足a.yeclfs = '1', 本应该取a.yelqje, 查出来的值怎么成了'*'号,而a.yelqje不为'*'号?
加载更多回复(8)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧