введите месяц и год и получите вывод за весь месяц - PullRequest
1 голос
/ 11 апреля 2020

Я пробовал этот код, но я хочу передать параметр месяца и года, используя условие where.

WITH d AS
  (SELECT TRUNC ( to_date('01.2012','mm.yyyy'), 'MM' ) - 1 AS dt
  FROM dual
  )
SELECT dt + LEVEL  AS date_month

   FROM d 
  CONNECT BY LEVEL <= ADD_MONTHS (dt, 1) - dt

Ответы [ 2 ]

2 голосов
/ 11 апреля 2020

Вам не нужно выражение WHERE, и вы можете передать год и месяц как переменные связывания:

SELECT month_start + LEVEL - 1 AS date_month
FROM   (
  SELECT ADD_MONTHS( TRUNC( TO_DATE( :year, 'YYYY' ), 'YYYY' ), :month - 1 )
           AS month_start
  FROM   DUAL
)
CONNECT BY month_start + LEVEL - 1 < ADD_MONTHS( month_start, 1 )
2 голосов
/ 11 апреля 2020

Вы очень близки к решению, можете сделать, например,

SQL> var mon number;
SQL> var year number;
SQL> begin :mon :=&mon; :year := &year; end; -- mon --> 4 and year --> 2020
  2  /

PL/SQL procedure successfully completed
mon
---------
4
year
---------
2020

SQL> 
SQL> WITH d AS
  2  (
  3   SELECT TRUNC( to_date(lpad(:mon,2,'0')||'.'||:year,'mm.yyyy'), 'MM' ) - 1 AS dt
  4     FROM dual
  5  )
  6  SELECT dt + LEVEL AS date_month
  7    FROM d
  8  CONNECT BY LEVEL <= ADD_MONTHS (dt, 1) - dt
  9  /

, чтобы перечислить все даты апреля 2020 . И замените эти значения параметров на нужные комбинации месяца и года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...