Sql 使用左联接组合两个select表达式

Sql 使用左联接组合两个select表达式,sql,left-join,teradata,Sql,Left Join,Teradata,嗨,我正试图收集我的回归研究的聚合时间序列数据。我需要在一个纵向表中用日期键左键连接多个选择。然而,因为我要处理相当大的数据帧,所以需要限制查询的日期间隔 选择交易的日期, s、 修订版 从db.transaction作为ts -其中,交易日期>日期“2019-08-13” 左连接 选择交易的日期,sumamount作为db.transaction的修订版,其中交易的日期>=日期“2019-08-13”和 主组编号=200和 组号=15,组号为 45,25,20,30中的类_编号 按交易的日期分

嗨,我正试图收集我的回归研究的聚合时间序列数据。我需要在一个纵向表中用日期键左键连接多个选择。然而,因为我要处理相当大的数据帧,所以需要限制查询的日期间隔

选择交易的日期, s、 修订版 从db.transaction作为ts -其中,交易日期>日期“2019-08-13” 左连接 选择交易的日期,sumamount作为db.transaction的修订版,其中交易的日期>=日期“2019-08-13”和 主组编号=200和 组号=15,组号为 45,25,20,30中的类_编号 按交易的日期分组 交易日期=交易日期; 当我关闭第四行的where子句时,我的查询没有任何问题。然而,当我添加我的时间过滤器来查询外部表时,我收到以下错误

选择失败。3706:语法错误:字符串或Unicode字符文本与“LEFT”关键字之间应存在某些内容


您在本节中有错误。有许多方法可以将字符串值转换为日期格式。您可以找到此链接以获取帮助


您在本节中有错误。有许多方法可以将字符串值转换为日期格式。您可以找到此链接以获取帮助

最简单的方法-

如果交易日期>2019年8月13日

最简单的方法-


Where ts.date\u of\u transaction>'2019年8月13日'

您不能在SELECT的Where子句中进行连接。把WHERE放在最末尾

选择交易的日期, s、 修订版 从db.transaction作为ts 左连接 选择交易的日期,sumamount作为db.transaction的修订版,其中交易的日期>=日期“2019-08-13”和 主组编号=200和 组号=15,组号为 45,25,20,30中的类_编号 按交易的日期分组 交易日期=交易日期 其中,交易日期>日期“2019-08-13”
无法在SELECT的WHERE子句中执行联接。把WHERE放在最末尾

选择交易的日期, s、 修订版 从db.transaction作为ts 左连接 选择交易的日期,sumamount作为db.transaction的修订版,其中交易的日期>=日期“2019-08-13”和 主组编号=200和 组号=15,组号为 45,25,20,30中的类_编号 按交易的日期分组 交易日期=交易日期 其中,交易日期>日期“2019-08-13”
根据您的实际查询,您可能能够用窗口聚合加大小写替换左连接,特别是当您使用不同的Where条件或不同的聚合级别多次访问同一个表时,例如

SELECT ts.date_of_transaction,
       sum(case when main_group_number=200
                 and group_number=15
                 and class_number in (45,25,20,30)
                then amount
            end)
       over (partition by date_of_transaction) as rev
FROM db.transaction as ts
Where ts.date_of_transaction > date '2019-08-13'
用于我的回归研究


Teradata内置了一些统计/回归函数,例如峰度、回归斜率等

根据您的实际查询,您可能能够用窗口聚合加大小写替换左连接,特别是当您使用不同的Where条件或不同的聚合级别多次访问同一个表时,例如

SELECT ts.date_of_transaction,
       sum(case when main_group_number=200
                 and group_number=15
                 and class_number in (45,25,20,30)
                then amount
            end)
       over (partition by date_of_transaction) as rev
FROM db.transaction as ts
Where ts.date_of_transaction > date '2019-08-13'
用于我的回归研究


Teradata内置了一些统计/回归函数,例如峰度、再斜率等

日期“2019-08-13”,这看起来不正确。它应该类似于“日期2019-08-13”,“YYYY-MM-DD”@JorgeCampos:date“2019-08-13”是正确的,它是一个标准的SQL日期文本,除Teradata外,还受到许多DBMS的支持。e、 甲骨文,博士后,MySQL@dnoeth谢谢你提供的信息,我不知道这个日期可以这样用。每天学习:日期'2019-08-13'这看起来不太对。它应该类似于“日期2019-08-13”,“YYYY-MM-DD”@JorgeCampos:date“2019-08-13”是正确的,它是一个标准的SQL日期文本,除Teradata外,还受到许多DBMS的支持。e、 甲骨文,博士后,MySQL@dnoeth谢谢你提供的信息,我不知道这个日期可以这样用。每天学习:日期“2019-08-13”是正确的,也是最简单/推荐的日期书写方式。它是一个标准的SQL日期文本,除Teradata外,许多DBMS都支持它。e、 g.Oracle、Postgres、MySQLdate“2019-08-13”是正确的,也是最简单/推荐的日期书写方式。它是一个标准的SQL日期文本,除Teradata外,许多DBMS都支持它。e、 甲骨文、Postgres、MySQL