使用CAST列进行SQL合并



我想执行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)也意味着表达式的结果不再匹配任何索引值。列上的任何索引对于查询都是毫无价值的。写条件使列值保持不变意味着索引仍然可以工作,这对性能来说可能是巨大的。

相关内容

  • 没有找到相关文章

最新更新