我想执行SQL合并,但在select语句中已CAST的列。
我试过这个代码:
CREATE TABLE test
AS
SELECT
a.ID, a.curr_bus_date, a.branch_no, a.account_no,
CAST(b.sortcodeinfo AS int) AS sortcode,
CAST(b.accountnumberinfo AS int) AS accountnumber,
b.curr_bus_date
FROM
TABLE1 AS a
LEFT JOIN
TABLE2 AS b ON a.branch_no = sortcode
AND a.account_no = accountnumber
AND a.curr_bus_date = b.curr_bus_date
WHERE
MONTH(curr_bus_date) = 11
AND YEAR(curr_bus_date) = 2022
我得到错误:
DatabaseError:调用StartQueryExecution操作时发生错误(InvalidRequestException):行2:37:输入'.'不匹配。期待:",","除了","从","组","有"、"相交","限制","抵消"、"订单","联盟","地方",
对于我想要合并的强制转换变量,我不能得到正确的语法。我需要这样做,因为变量是不同的类型,否则不会合并。表中的体积太大,不能作为单独的练习来进行铸造。
在select
子句中创建的名称在ON
连接条件中还不可用。您必须在这里重复cast
表达式。
此外,对于WHERE
子句,这将是MUCH高效:
WHERE curr_bus_date >= '20221101' and curr_bus_date < '20221201'
以前,数据库必须为表中的每一行curr_bus_date
列运行月和年函数,甚至包括您不需要的行。使用函数或以其他方式更改字段(如curr_bus_date
)也意味着表达式的结果不再匹配任何索引值。列上的任何索引对于查询都是毫无价值的。写条件使列值保持不变意味着索引仍然可以工作,这对性能来说可能是巨大的。