sql case 语句有问题吗?

发布于 2024-10-25 06:54:48 字数 520 浏览 1 评论 0原文

     select no        
     from  shan      
     where  account_number      = '7111'
     and   area          = 'O1139'
     and   ty            = '1'
     and   ty1           = 'T'
     and   date          = '12-AUG-10'
     and   code          in (case 'B'
                             when 'B' then 'j01','j05'
                             when 'C' then 'j02','j06'
                             else 'j03'
                             end);

我需要检查“j01”或“j05”中的代码值,我该如何重写查询,请以正确的方式指导我?

     select no        
     from  shan      
     where  account_number      = '7111'
     and   area          = 'O1139'
     and   ty            = '1'
     and   ty1           = 'T'
     and   date          = '12-AUG-10'
     and   code          in (case 'B'
                             when 'B' then 'j01','j05'
                             when 'C' then 'j02','j06'
                             else 'j03'
                             end);

i need to check code value in 'j01' or 'j05' , how can i rewrite the query anyone please direct me in a right way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你的心境我的脸 2024-11-01 06:54:50
select no from shan
where 
    account_number = '7111'
    and area          = 'O1139'
    and ty            = '1'
    and ty1           = 'T'
    and date          = '12-AUG-10'
    and ('B' = 'B' AND code in ('j01', 'j05') OR 'B' = 'C' AND code in ('j02','j06'))

case 仅适用于标量值。

提供的解决方案将是一种替代方案。

select no from shan
where 
    account_number = '7111'
    and area          = 'O1139'
    and ty            = '1'
    and ty1           = 'T'
    and date          = '12-AUG-10'
    and ('B' = 'B' AND code in ('j01', 'j05') OR 'B' = 'C' AND code in ('j02','j06'))

case works for scalar values only.

The solution provided would be an alternative.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文