在 Teradata 中使用 COUNT 和 INTERSECT 时遇到问题

2023-12-24

我正在尝试在 Teradata 中运行下面的代码。但是,当我尝试计算该交集的行数时,我不断收到错误。错误是:失败[2616:22003]计算期间发生数字溢出。

我尝试将 CAST 与 BIGINT 一起使用,但现在该值变为空。当我运行实际相交(没有 COUNT 子句)时 - 我能够看到该相交的行列表。我希望能够数出这个数字。你知道我该怎么做吗?

select CAST(count(a.main_id) AS BIGINT) from second_database.tra_rock a
    database.game_active b ON a.main_key=b.main_key AND description_detail LIKE 'AC'
    database.release_day c ON a.release_key = c.release_key AND g_description = 'FW'
    database.ft_feature d on a.main_id = d.main_id AND first_time >= 20200319 
    where action_date_key between 20200319 and 20200324 and a.main_id IN 
        (select a.main_id
        From second_database.tra_rock a
        database.game_active b ON a.main_key=b.main_key AND description_detail LIKE 'AC'
        where action_date > 20200324 and release_key = 200)
    INTERSECT
    select a.main_id
    From second_database.tra_rock a
    database.game_active b ON a.main_key=b.main_key AND description_detail LIKE 'AC'
    database.release_day c ON a.release_key = c.release_key AND g_description = 'FW'
    database.ft_feature d on a.main_id = d.main_id AND DATE_KEY >= 20200319 
    where action_date_key between 20200319 and 20200324 and a.main_id IN 
        (select a.main_id
        From second_database.tra_rock a
        database.game_active b ON a.genome_key=b.genome_key AND description_detail <> 'AC'
        where action_date > 20200324 and release_key = 200)

COUNT 仅应用于第一个选择,然后尝试将计数与第二个选择中的 main_id 相交。

您需要将完整查询包装到派生表或公共表表达式中:

select cast(count(*) as bigint)
from
 ( 
    select a.main_id from second_database.tra_rock a
        database.game_active b ON a.main_key=b.main_key AND description_detail LIKE 'AC'
        database.release_day c ON a.release_key = c.release_key AND g_description = 'FW'
        database.ft_feature d on a.main_id = d.main_id AND first_time >= 20200319 
        where action_date_key between 20200319 and 20200324 and a.main_id IN 
            (select a.main_id
            From second_database.tra_rock a
            database.game_active b ON a.main_key=b.main_key AND description_detail LIKE 'AC'
            where action_date > 20200324 and release_key = 200)
        INTERSECT
        select a.main_id
        From second_database.tra_rock a
        database.game_active b ON a.main_key=b.main_key AND description_detail LIKE 'AC'
        database.release_day c ON a.release_key = c.release_key AND g_description = 'FW'
        database.ft_feature d on a.main_id = d.main_id AND DATE_KEY >= 20200319 
        where action_date_key between 20200319 and 20200324 and a.main_id IN 
            (select a.main_id
            From second_database.tra_rock a
            database.game_active b ON a.genome_key=b.genome_key AND description_detail <> 'AC'
            where action_date > 20200324 and release_key = 200)
 ) as dt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Teradata 中使用 COUNT 和 INTERSECT 时遇到问题 的相关文章

  • SQL Server 上的语法错误

    这可能是一个愚蠢的语法错误 但我只是继续阅读我的程序 但我无法弄清楚我的错误在哪里 消息 156 第 15 级 状态 1 第 41 行关键字附近的语法不正确 为了 这是我的代码 alter procedure LockReservation
  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在mysql中选择具有相同值集的列?

    我的桌子是 patients pid name city disease did dname has disease did pid 我想列出具有相同疾病组的患者 pid 和 did 分别是患者和疾病表中的主键 并且是 has diseas
  • SQL 错误:“没有这样的表”

    我试图解决为什么我的代码为所有查询返回 null 的原因 最后发现 sql 查询什么也没有返回 我使用简约代码创建了一个新的 AIR 文档 s WindowedApplication
  • 给定“java.sql.SQLIntegrityConstraintViolationException”是否可以确定错误的列

    鉴于我有一个类型为 java sql SQLIntegrityConstraintViolationException 的异常 是否可以以编程方式确定错误的列 或多列 我问这个问题是因为我想将错误映射回客户端的数据模型以指示错误的字段 例如
  • 在 MySQL 中对整数字段运行带引号的数字(字符串)查询时会发生哪些复杂情况

    在 SQL 中 不应引用整数 因为如果引用 它将是一个字符串 但我很好奇如果我这样做会出现什么问题 并发症 例如 SELECT FROM table WHERE id 1 正确的 vs SELECT FROM table WHERE id
  • PL/pgSQL SELECT 到数组中

    这是我的函数声明和主体的一部分 CREATE OR REPLACE FUNCTION access update RETURNS void AS DECLARE team ids bigint BEGIN SELECT INTO team
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • 需要按天分割日期时间范围

    我有一个需要根据日期时间拆分的表 输入表 ID Start End A 2019 03 04 23 18 04 2019 03 04 23 21 25 A 2019 03 04 23 45 05 2019 03 05 00 15 14 所需
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • SQL Server 2008R2 和创建 XML 文档

    论坛上的第一篇文章 因为我真的被这个问题困住了 以下查询正确地将有效的 XML 文档分配给 xTempXML 变量 类型为 xml 注 文档的长度 转换为varchar max 711 select xTempXML select Pres
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe

随机推荐