Я пытаюсь объявить переменную с именем NEW_VARIABLE
, которая равна (end_date - start_date)
. Затем я использую переменную NEW_VARIABLE
ниже в качестве интервала (date1 + NEW_VARIABLE + interval '1 days')
.Объявление переменной в инструкции SELECT
CREATE TEMPORARY TABLE tmp1_variables AS (
SELECT
'2016-10-29'::date as start_date,
dateadd(day,-10,getdate())::date as end_date,
'2015-10-31'::date as date1
(end_date - start_date) as NEW_VARIABLE
);
DROP TABLE IF EXISTS tmp_tbl1;
CREATE TEMPORARY TABLE tmp_tbl1 (cobrand_id int, xsum numeric(30,15));
insert into tmp_tbl1 (cobrand_id, xsum)
select q1.cobrand_id, q1.a/q2.d as xsum from (
SELECT cobrand_id, sum(calc) AS a FROM jwn_calc s, tmp1_variables
where s.optimized_transaction_date > start_date AND s.optimized_transaction_date <= end_date + interval '1 days' GROUP BY cobrand_id
) as q1
inner join (
SELECT cobrand_id AS c,
sum(CASE WHEN optimized_transaction_date > date1 AND optimized_transaction_date <= date1 + NEW_VARIABLE + interval '1 days' THEN Calc END)/
sum(CASE WHEN optimized_transaction_date > date1 AND optimized_transaction_date <= date1 + interval '91 days' THEN Calc END) AS d
FROM jwn_calc, tmp1_variables
GROUP BY cobrand_id
) as q2 on q1.cobrand_id = q2.c;
Примеры данных и желаемые результаты будут творить чудеса, чтобы объяснить, что вы хотите сделать. –
Привет, Гордон, я хотел исправить синтаксис на этом, а не искать желаемый результат. Как я могу объявить (end_date - start_date) как переменную, когда я создал переменные end_date и start_date в одном и том же предложении select? Это возможно? – ZJAY