我想在子句中加上 Case
我的甲骨文报告的声明。
我有一个参数,它使用1月20日,2月20日等等。
当我选择apr-20时,我想检索jan-20、feb-20、mar-20和apr-20的行。如果我选择1月20日,我只想检索1月20日的行。
我打算用case-when语句。
计划如下:
WHERE GL.periodname IN
CASE WHEN :Parameter = 'Jan-20' THEN 'Jan-20'
CASE WHEN :Parameter = 'Feb-20' THEN 'Jan-20'
CASE WHEN :Parameter = 'Feb-20' THEN 'Feb-20'
CASE WHEN :Parameter = 'Mar-20' THEN 'Jan-20'
CASE WHEN :Parameter = 'Mar-20' THEN 'Feb-20'
CASE WHEN :Parameter = 'Mar-20' THEN 'Mar-20'
等等。
有没有人知道一个替代方案,因为这似乎只适用于一个相同的子句?
任何帮助都将不胜感激!
2条答案
按热度按时间h5qlskok1#
只需转换为日期:
(注意:您可能还需要考虑年份。这还不清楚。)
实际上,我建议将句点名称存储为yyyy-mm格式(“2020-01”),而不是您所使用的方式。
如果以相同的格式传入参数,则可以使用字符串比较:
dxpyg8gm2#
您的描述表明您正在查找值的日期范围。即从一月到参数中提供的参数月份。如果是这样的话,case语句将不会给出所需的内容,因为它只能返回单个值。因为您正在查找日期范围,所以请将时段名称列和参数转换为日期。看小提琴。
我会比@gordon更进一步,把它存储为date。如果您真的需要经常使用的mon\u rr格式,请将其添加到虚拟列中。所以: