在 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 时遇到问题 的相关文章

  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • 从表中选择行,其中另一个表中具有相同 id 的行在另一列中具有特定值

    在 MySQL 中 如果我们有两个表 comments key value 1 foo 2 bar 3 foobar 4 barfoo and meta comment key value 1 1 2 1 3 2 4 1 我想得到来自以下人
  • hive - 在值范围之间将一行拆分为多行

    我在下面有一张表 想按从开始列到结束列的范围拆分行 即 id 和 value 应该对开始和结束之间的每个值重复 包括两者 id value start end 1 5 1 4 2 8 5 9 所需输出 id value current
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是
  • 替换字符串中的多个字符,而不使用任何嵌套替换函数

    我的表中存储了一个方程 我一次获取一个方程 并希望将所有运算符替换为任何其他字符 输入字符串 N 100 6858 6858 N 100 0 2 N 35 运算符或模式 替换字符 输出字符串 N 100 6858 6858 N 100 0
  • 使用来自另一个的 SELECT 更新表,但字段为 SUM(someField)

    基本上我有这样的事情 UPDATE Table SET Table col1 other table col1 FROM Table INNER JOIN other table ON Table id other table id 问题是
  • 使用 Proc sql 和 Teradata 在 SAS 中编写高效查询

    编辑 这是一组更完整的代码 它准确地显示了下面的答案所发生的情况 libname output data files jeff let DateStart 01Jan2013 d let DateEnd 01Jun2013 d proc s
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 连接 3 三张表

    我有这个图表应该可以解释我的情况 我需要一些关于连接 3 个表的帮助 我不知道如何做这种事情 因此 我可以通过执行以下操作来经历一段检索记录的 while 循环 img src alt Album AlbumID 使用内部联接 http w
  • 合并并添加两个表中的值

    是否可以制作一个在两个表中添加值的查询 例如 假设您有两张表 id value a 1 c 2 d 3 f 4 g 5 and id value a 1 b 2 c 3 d 4 e 5 然后 当您 添加 两个表时 您将获得 id 匹配的结果
  • 如何在审计触发器中使用system_user但仍使用连接池?

    我想做以下两件事 在我的数据库表上使用审计触发器来识别哪个用户更新了什么 使用连接池来提高性能 对于 1 我在数据库触发器中使用 system user 来识别进行更改的用户 但这阻止我执行需要通用连接字符串的 2 有没有一种方法可以让我充
  • 作为 UDF 结果的列上的 Where 子句

    我有一个用户定义的函数 例如myUDF a b 返回一个整数 我试图确保该函数仅被调用一次 并且其结果可以用作WHERE clause SELECT col1 col2 col3 myUDF col1 col2 AS X From myTa
  • 使用“AND”表达式构建动态 SQL,而不混淆嵌套条件?

    总的来说 我对 php 和编码相当陌生 我有一系列条件需要测试它们是否已设置 它们是 option1 option2 option3 if isset option1 if isset option2 if isset option3 qu
  • Entity Framework 6 多对多想要插入重复行

    不应该这么难 我准备放弃EF了 我的模型有周刊版本 每个版本可以有许多分类广告 每个分类可以出现在一个或多个版本中 我的模型 public class Classifieds Key DatabaseGenerated DatabaseGe
  • Allen Browne 的 ConcatRelated() 错误 3061:参数太少

    我正在尝试创建给定仓库的产品列表 Allen Browne 的 ConcatRelated 函数似乎是在链接变量相同时创建列表的经过验证的正确方法 但我无法让它工作 我已将我的信息分解为单个查询 qry Products SELECT qr
  • 从java运行sqlplus脚本的简单方法

    我有包含 sqlplus 特定脚本的 sql 文件 它包括 或 作为语句终止符 执行存储过程的 EXEC 等 我需要从 java jdbc 执行此脚本 而不需要 sqlplus sql ant任务 maven sql插件无法处理不同的终止符
  • MySQL 5:我的 GROUP BY 字段的顺序重要吗?

    Peeps 我的 MySQL 查询中有一些聚合 计算字段 我的 GROUP BY 子句是动态生成的 具体取决于用户在 Web 表单中选择的选项 很好奇 GROUP BY 子句中列出的字段顺序是否会对计算产生任何影响 例如 SUM AVERA
  • 单个查询删除并显示重复记录

    采访中提出的问题之一是 一张表有100条记录 其中 50 个 是重复的 是否可以用单个 查询删除重复记录 从表中以及选择和 显示剩余 50 条记录 这可以在单个 SQL 查询中实现吗 Thanks SNA 对于 SQL Server 你会使
  • 从 SQL 数据库获取日期时间

    我的数据库表中有一个 DateTime 记录 我编写一个查询从数据库中获取它 string command2 select Last Modified from Company Data where Company Name Descrip
  • SQL Server 2008 GUID 列全为 0

    我希望这是我做的一个简单的傻事 我的数据库中有一个表 设置如下 column name widget guid data type uniqueidentifier allow nulls false default value newid

随机推荐