首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于CASE语句执行SELECT

基于CASE语句执行SELECT
EN

Stack Overflow用户
提问于 2019-12-11 10:29:46
回答 1查看 61关注 0票数 0

我正在尝试执行select语句,具体取决于大小写

代码语言:javascript
运行
复制
SELECT CASE WHEN TO_CHAR(today, "%a") = 'Mon' 
THEN (SELECT COUNT(*) FROM  jobs WHERE datein > today-2) 
ELSE (SELECT COUNT(*) FROM  jobs WHERE datein = today) 
END CASE;

因此,我期望如果日期是'Mon‘(星期一),则执行Select from (星期一-2天),并使所有列/行不只是1个计数,否则执行当天的select。

如果日期是星期一,则结果应为

代码语言:javascript
运行
复制
id | jobs | date
1  |12,500| 12-7-2019
2  |10,800| 12-8-2019

如果日期与周一不同,应该是相同的,但对于今天的数据

代码语言:javascript
运行
复制
id | jobs | date
3  |35,000| 12-9-2019

如果这是不可能的,还有其他方法吗?(考虑到我的访问权限有限)

数据库服务器: INFORMIX 12.1我只能使用Toad for Data Analysts或IBM Data Studio读取数据库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-12 01:48:08

如果没有模式和数据示例,则很难确切知道您想要什么,但如果我们假设您希望根据日期从表作业中获取所有行,则可以执行以下查询

代码语言:javascript
运行
复制
SELECT jobs.*
  FROM jobs
 WHERE jobs.datein >=  CASE
                         WHEN WEEKDAY(TODAY) = 1 THEN TODAY-2
                         ELSE TODAY
                       END

我没有您提到的工具,但是这个查询可以从dbaccess在Informix 12.10和14.10上正常运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59278077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档