0
我想声明一个名为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;
样本数据和期望的结果将做奇迹来解释你想要做什么。 –
嗨戈登,我正在寻找修复这一个语法,而不是寻求一个理想的结果。当我在同一个select语句中创建变量end_date和start_date时,如何将变量声明为(end_date - start_date)作为变量?这可能吗? – ZJAY