【发布时间】:2019-11-07 07:46:09
【问题描述】:
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
【问题讨论】:
-
我在这里看不到实际的问题陈述,只是一堆代码。请让我们知道这个大型 SQL 查询中实际问题出在哪里。
-
两个表中日期列的数据类型是什么?是
table_name_b中的日期数据类型和table_name_a中的数字数据类型吗? -
@Tejash table_name_a 的日期是'20191107',table_name_b 的日期是'2019-11-07 00:00:00',这就是我使用 substr(regexp_replace(date,' -',''),1,8) in table_name_b
-
你能提供
desc table_name_b的输出吗?和desc table_name_a? -
不幸的是,您已经将代码编辑到了无稽之谈的地步:此查询无法在 Oracle 数据库上编译。您需要提供完全有效的测试用例或对您正在尝试做的事情的清晰解释。所以请给我们表格结构、样本数据、示例参数值以及从起始数据和参数派生的所需输出。您不必向我们提供您的实际表格:仅包含查询引用的列的简化结构。