Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 基于SYSDATE获取特定月份的月度数据_Oracle_Oracle11g_Oracle10g - Fatal编程技术网

Oracle 基于SYSDATE获取特定月份的月度数据

Oracle 基于SYSDATE获取特定月份的月度数据,oracle,oracle11g,oracle10g,Oracle,Oracle11g,Oracle10g,我每月运行一次查询以选择 基于一月、二月、三月、四月、九月的数据 10月,11月,12月 假设我在2018年2月运行此查询,然后 1月和2月的数据应来自本年度(2018年)以及3月、4月和9月的数据 10月、11月、12月应来自上一年(2017年)。如何使用SYSDATE处理此问题 >SELECT * FROM MY_TABLE WHERE MONTH_NAME IN ('JAN','FEB','MAR','APR','SEP','OCT','NOV','DEC') AND YEAR

我每月运行一次查询以选择 基于一月、二月、三月、四月、九月的数据 10月,11月,12月

假设我在2018年2月运行此查询,然后 1月和2月的数据应来自本年度(2018年)以及3月、4月和9月的数据 10月、11月、12月应来自上一年(2017年)。如何使用SYSDATE处理此问题

>SELECT * FROM MY_TABLE WHERE MONTH_NAME 
IN ('JAN','FEB','MAR','APR','SEP','OCT','NOV','DEC') 
AND 
YEAR=TO_CHAR(TRUNC(SYSDATE),'YYYY');

假设我有列MONTH_NAME,其中包含所有月份名称和年份与年份,以匹配记录。

如果没有示例数据,很难说出您到底想要什么,但可能是这样的

SELECT * 
  FROM   my_table 
WHERE  month_name IN ( 'JAN', 'FEB', 'MAR', 'APR', 
                       'SEP', 'OCT', 'NOV', 'DEC' ) 

AND ( 
      ( EXTRACT ( MONTH FROM TO_DATE( month_name ,'MON' ) ) 
                    <= EXTRACT ( MONTH FROM SYSDATE ) AND YEAR = 2018) OR
      ( EXTRACT ( MONTH FROM TO_DATE( month_name ,'MON' ) ) 
                  >  EXTRACT ( MONTH FROM SYSDATE ) AND YEAR = 2017)
    )
选择*
从我的桌子上
其中月份名称位于('一月'、'二月'、'三月'、'四月',
‘九月’、‘十月’、‘十一月’、‘十二月’)
及(
(摘录(从年月日到年月日(月名,'MON'))
摘录(从系统日期算起的月份)和年份=2017年)
)

最好将
'NLS\u DATE\u LANGUAGE=ENGLISH'
作为
的第三个参数添加到\u DATE
中,如果没有示例数据,很难准确说出您想要什么,但可能是这样的

SELECT * 
  FROM   my_table 
WHERE  month_name IN ( 'JAN', 'FEB', 'MAR', 'APR', 
                       'SEP', 'OCT', 'NOV', 'DEC' ) 

AND ( 
      ( EXTRACT ( MONTH FROM TO_DATE( month_name ,'MON' ) ) 
                    <= EXTRACT ( MONTH FROM SYSDATE ) AND YEAR = 2018) OR
      ( EXTRACT ( MONTH FROM TO_DATE( month_name ,'MON' ) ) 
                  >  EXTRACT ( MONTH FROM SYSDATE ) AND YEAR = 2017)
    )
选择*
从我的桌子上
其中月份名称位于('一月'、'二月'、'三月'、'四月',
‘九月’、‘十月’、‘十一月’、‘十二月’)
及(
(摘录(从年月日到年月日(月名,'MON'))
摘录(从系统日期算起的月份)和年份=2017年)
)

最好将
'NLS\u DATE\u LANGUAGE=ENGLISH'
作为
的第三个参数添加到\u DATE
中,无需样本数据,我建议采用以下方法:

  • 获取所需日期的列表
选择添加月份(
trunc(sysdate,'mm'),
-级别+1
)
来自双重

在没有样本数据的情况下,按级别连接,我建议采用以下方法:

  • 获取所需日期的列表
选择添加月份(
trunc(sysdate,'mm'),
-级别+1
)
来自双重

请按级别连接,告诉规则在哪些情况下您只需要来自本年度的数据,以及何时需要来自上一个和当前的数据。还要添加一些示例数据和预期结果。请告诉规则在哪些情况下您只需要来自本年度的数据,何时需要来自上一个和当前的数据。还要添加一些示例数据和预期结果。