根据 CASE 语句执行 SELECT
Do a SELECT based on a CASE statement
我正在尝试根据 CASE
执行 select 语句
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'(星期一)然后从(星期一 - 2 天)开始执行 Select 并带来所有 columns/rows 而不仅仅是 1 COUNT ,否则执行当天的 select。
如果那天是星期一,结果应该是
id | jobs | date
1 |12,500| 12-7-2019
2 |10,800| 12-8-2019
如果日期与星期一不同,应该是相同的,但对于今天的数据
id | jobs | date
3 |35,000| 12-9-2019
如果这不可能,还有其他方法吗?(考虑到我的访问权限有限)
数据库服务器:INFORMIX 12.1
我只能使用 Toad for Data Analysts 或 IBM Data Studio 读取数据库。
没有模式和数据样本很难确切知道你想要什么,但如果我们假设你想根据日期从 table 作业中获取所有行,你可以执行这个查询
SELECT jobs.*
FROM jobs
WHERE jobs.datein >= CASE
WHEN WEEKDAY(TODAY) = 1 THEN TODAY-2
ELSE TODAY
END
我没有你提到的工具,但是这个查询 运行 在来自 dbaccess 的 Informix 12.10 和 14.10 上正常。
我正在尝试根据 CASE
执行 select 语句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'(星期一)然后从(星期一 - 2 天)开始执行 Select 并带来所有 columns/rows 而不仅仅是 1 COUNT ,否则执行当天的 select。
如果那天是星期一,结果应该是
id | jobs | date
1 |12,500| 12-7-2019
2 |10,800| 12-8-2019
如果日期与星期一不同,应该是相同的,但对于今天的数据
id | jobs | date
3 |35,000| 12-9-2019
如果这不可能,还有其他方法吗?(考虑到我的访问权限有限)
数据库服务器:INFORMIX 12.1 我只能使用 Toad for Data Analysts 或 IBM Data Studio 读取数据库。
没有模式和数据样本很难确切知道你想要什么,但如果我们假设你想根据日期从 table 作业中获取所有行,你可以执行这个查询
SELECT jobs.*
FROM jobs
WHERE jobs.datein >= CASE
WHEN WEEKDAY(TODAY) = 1 THEN TODAY-2
ELSE TODAY
END
我没有你提到的工具,但是这个查询 运行 在来自 dbaccess 的 Informix 12.10 和 14.10 上正常。