SQL查询是python文件的部分代码,tt1的val
和tt2的val
在单个文件中都可以正常工作,现在我想计算tt1.val/tt2.val
,我必须输入参数code
,start_date
和end_date
,
the date from table_name_a is '20191107'
the date from table_name_b is '2019-11-07 00:00:00'
这就是为什么我在table_name_b中使用substr(regexp_replace(date,'-',''),1,8)
,按如下所示粘贴错误的SQL查询的原因,可以使用case when
或if else
来使用两个不同的日期变量吗?非常感谢您的任何建议。
SELECT code, tt1.val/tt2.val
FROM (
(
SELECT code,
CAST (exp(sum(ln(val+1))) -1 AS decimal(20,16)) val
FROM (
SELECT code, val
from table_name_a
WHERE code IN ('%(code)s')
AND date BETWEEN '%(start_date)s' AND '%(end_date)s')
GROUP BY code
) AS tt1
(
SELECT code,
CAST (exp(sum(ln(val+1))) -1 AS decimal(20,16)) val
FROM (
SELECT code, val
from table_name_b
WHERE code IN ('%(code)s')
AND substr(regexp_replace(date,'-',''),1,8) BETWEEN '%(start_date)s' AND '%(end_date)s' AS t1
GROUP BY code
) AS tt1
) AS tt3
答案 0 :(得分:0)
我认为您只需要JOIN
您的查询:
SELECT tt1.code, tt1.val/tt2.val
FROM (SELECT code
, CAST (exp(sum(ln(val+1))) -1 AS decimal(20,16)) val
FROM table_name_a
WHERE code IN ('%(code)s')
AND date BETWEEN '%(start_date)s' AND '%(end_date)s'
GROUP BY code) tt1
JOIN (SELECT code
, CAST (exp(sum(ln(val+1))) -1 AS decimal(20,16)) val
FROM table_name_b
WHERE code IN ('%(code)s')
AND substr(regexp_replace(date,'-',''),1,8) BETWEEN '%(start_date)s' AND '%(end_date)s'
GROUP BY code) tt2
ON tt2.code = tt1.code
还简化了您的查询。