Сценарий Python Oracle SQL передает аргумент, используя одну и ту же переменную одновременно - PullRequest
0 голосов
/ 31 мая 2018

Я использую SQL-скрипт Oracle с использованием Python-панд и хотел передать переменную с помощью {}.format(var).дело в том, что я не хочу передавать ту же переменную для количества фигурных скобок, как {}{}{}.format(var1,var1,var1).Однако это должно работать как {}{}{}.format(var1).

, есть ли способ сделать это?Вот мой сценарий SQL: поэтому вместо '2018-05-01' я хочу передать одну переменную и вторую переменную '2018-05-30'.

    SELECT * FROM (SELECT SUBSTR(PLACEMENT_DESC,1,INSTR(PLACEMENT_DESC, '.', 1)-1) AS PLACEMENT#, TO_CHAR(SDATE, 'YYYY-MM-DD') AS START_DATE, 
TO_CHAR(EDATE, 'YYYY-MM-DD') AS END_DATE, INITCAP(CREATIVE_DESC)  AS PLACEMENT_NAME, COST_TYPE_DESC AS COST_TYPE, 
UNIT_COST AS UNIT_COST, BUDGET AS PLANNED_COST, BOOKED_QTY AS BOOKED_IMP#BOOKED_ENG FROM TFR_REP.SUMMARY_MV
WHERE (IO_ID = {})
     AND (DATA_SOURCE = 'KM')
     AND (TO_CHAR(SDATE, 'YYYY-MM-DD') BETWEEN
     (CASE WHEN '2018-05-01' BETWEEN TO_CHAR(SDATE, 'YYYY-MM-DD') AND TO_CHAR(EDATE, 'YYYY-MM-DD') THEN TO_CHAR(SDATE, 'YYYY-MM-DD')
      ELSE (CASE WHEN '2018-05-01' < TO_CHAR(SDATE, 'YYYY-MM-DD') AND '2018-05-01' <= TO_CHAR(EDATE, 'YYYY-MM-DD') THEN TO_CHAR(SDATE, 'YYYY-MM-DD')
            ELSE TO_CHAR(SDATE, 'YYYY-MM-DD') END)
      END)
     AND
     (CASE WHEN '2018-05-30' BETWEEN TO_CHAR(SDATE, 'YYYY-MM-DD') AND TO_CHAR(EDATE, 'YYYY-MM-DD') THEN '2018-05-30'
      ELSE (CASE WHEN '2018-05-30' > TO_CHAR(EDATE, 'YYYY-MM-DD') AND '2018-05-01' <= TO_CHAR(SDATE, 'YYYY-MM-DD') THEN TO_CHAR(EDATE, 'YYYY-MM-DD')
            ELSE TO_CHAR(EDATE, 'YYYY-MM-DD') END)
      END))
     AND
     (TO_CHAR(EDATE, 'YYYY-MM-DD') BETWEEN
     (CASE WHEN '2018-05-01' BETWEEN TO_CHAR(SDATE, 'YYYY-MM-DD') AND TO_CHAR(EDATE, 'YYYY-MM-DD') THEN '2018-05-01'
      ELSE (CASE WHEN '2018-05-01' < TO_CHAR(SDATE, 'YYYY-MM-DD') AND '2018-05-01' <= TO_CHAR(EDATE, 'YYYY-MM-DD') THEN TO_CHAR(SDATE, 'YYYY-MM-DD')
            ELSE TO_CHAR(SDATE, 'YYYY-MM-DD') END)
      END)
     AND
     (CASE WHEN '2018-05-30' BETWEEN TO_CHAR(SDATE, 'YYYY-MM-DD') AND TO_CHAR(EDATE, 'YYYY-MM-DD') THEN TO_CHAR(EDATE, 'YYYY-MM-DD')
      ELSE (CASE WHEN '2018-05-30' > TO_CHAR(EDATE, 'YYYY-MM-DD') AND '2018-05-01' <= TO_CHAR(SDATE, 'YYYY-MM-DD') THEN TO_CHAR(EDATE, 'YYYY-MM-DD')
            ELSE TO_CHAR(EDATE, 'YYYY-MM-DD') END)
      END))
     AND CREATIVE_DESC IN(SELECT DISTINCT CREATIVE_DESC
                          FROM TFR_REP.SUMMARY_MV))
WHERE Placement_Name Not LIKE '%Pre-Roll%' and  Placement_Name Not LIKE '%Pre–Roll%'

1 Ответ

0 голосов
/ 31 мая 2018

Это может быть то, что вы ищете:

a = 'first'
b = 'second'

'{0} {0} {0} {1}'.format(a, b)
#first first first second
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...