问题标签 [teradatasql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
139 浏览

sql - 数据库中没有更多的假脱机空间 (Teradata)

我是 SQL 的初学者,我对 Teradata 的一个查询有疑问。当我运行它时,我得到这个错误:

“数据库中没有更多的假脱机空间”。

根据我在互联网上的研究,问题可能来自于我的查询不够优化,除了我不知道如何简化它。请你帮助我好吗?

查询错误来自哪里:

查询应该做什么:

0 投票
2 回答
33 浏览

sql - 创建一个视图以迎合动态月份

提供了一个子查询来创建视图,并且该视图应满足动态月份变量的需求。

像这样的子查询:

-- 月份不固定,可能是 202103,202106

视图应该这样调用:

--月不固定,可能是202103,可能是202106

此视图的关键输出是 KPI,即从 202101 到 202104 的 KPI_single_month 的总和。如果月份是 202106,则从一月到六月的总和(KPI_single_month)(共 6 个月)。

那么创建视图的难点在于月份变量是未知的,那么创建视图的SQL语句中要求和多少个子查询呢?谢谢!

0 投票
0 回答
102 浏览

sql - Teradata SQL 中的自定义存储过程

过去,我将 SQL Server 存储过程中的游标改编为 Teradata,但尝试使用时遇到了一些麻烦。我的程序代码是:

目标是收集一系列表的名称并使用游标逻辑重命名它们。像这样:如果我的数据库“myTableA”、“myTableB”、“myTableC”上有三个表,我希望通过游标逻辑将它们重命名为“P_BACKUP_V2021_0”、“P_BACKUP_V2021_1”、“P_BACKUP_V2021_2”。

当我尝试调用该过程时会出现问题。只有第一行执行有效,然后当游标尝试继续执行时显然返回错误:

也许问题出在一些语法细节上,但我看不出有什么问题。

有人可以指导我吗?

0 投票
0 回答
40 浏览

teradata-sql-assistant - Teradata 存储过程,不结合两个变量。数据库名称和表名称(点)

我在 terdata 中创建了一个存储过程,它将接受数据库名称和表作为参数,并返回一个值。

但在第 8 行,我得到以下错误: 语法错误,预期类似';' 在字符串或 Unicode 字符文字和 ':'.' 之间。

请帮我看看这有什么问题?

0 投票
0 回答
154 浏览

stored-procedures - 动态 SQL 调用 Teradata 中的另一个存储过程

我在帮助指南中看到,您不能在没有输出参数的 teradata 动态 sql 语句中使用调用语句。

我假设这意味着我可以,如果 proc 有一个输出参数。

有人做过吗?

设想 -

我有一个表,在某些时候我会根据逻辑字段扩展什么时候应该运行的逻辑,并且这个表在其他地方管理 -

现在我添加了 chrTest 作为输出但是,我仍然在运行时遇到错误(没有编译错误)

错误:- SQL_State SQL_Exception T7689 无效的动态 SQL 语句。

0 投票
0 回答
92 浏览

sql - Teradata SQL:根据两列中的值选择行,其中姓名的顺序在 Teradata SQL 中并不重要?

我在 Teradata SQL 表中,如下所示:

我只想选择以下行:

  • 在 col1 我有 col2 + something 的值(没关系在值之前或之后)
  • 请注意,姓名和姓氏的顺序并不重要,因此 Jan Kowal 与 Kowal Jan 相同

因此,我需要像下面这样的东西,所以只有第一行和第二行,因为 col2 中有 col1 值 + 其他东西,名字和姓氏的顺序并不重要:

在此处输入图像描述

我使用了如下查询,但我的查询没有考虑到姓名顺序并不重要,并且对于我的代码 Jan Kowal 和 Kowal Jan 是不同的人。

此外,我使用的代码非常适合我的情况并且可以正常工作,但仅在 MS SQL Server 上,在 Teradata SQL id 上不起作用:

我怎样才能在 Teradata SQL 中做到这一点?您能否修改我在 MS SQL Server 上工作的代码或建议您自己在 Teradata SQL 上工作的解决方案?

0 投票
0 回答
79 浏览

teradata - 在 Teradata 中将 Varchar 转换为十进制

我需要将临时表中的值加载到目标表中,其中临时表中的所有列分别为 varchar 格式,

现在,当我将它们转换为十进制并加载到最终表中时,它的某些列失败了。

阶段表:

创建设置表 stg ( down_speed varchar(13));

目标表:

创建设置表 trgt (down_speed decimal (8,4));

询问

插入 trgt (down_speed) 选择 cast(down_speed as decimal(8,4)) from stg;

错误 插入失败 2617:(-2617) 计算涉及 **column_name 的表达式时发生溢出

stging table 导致错误的列值 :'88440'

从 stg 中选择 cast('88440' as decimal(8,4));

down_speed 列的所有值在 stg 中都在 8 个字符以下,通常我会像这样进行投射,但我找不到哪里出错了?

0 投票
1 回答
69 浏览

sql - 将代码从 SQL Server 重写为 Teradata SQL 的复杂问题?

我在 Teradata SQL 表中,如下所示:

我只想选择以下行:

  • 在 col1 我有来自 col2 + 东西的价值(没关系之前或之后的价值)
  • 请注意,姓名和姓氏的顺序并不重要,因此 Jan Kowal 与 Kowal Jan 相同

因此,我需要像下面这样的东西,所以只有第一行和第二行,因为 col2 中有 col1 值 + 其他东西,名字和姓氏的顺序并不重要:

在此处输入图像描述

  1. 我使用了如下查询,但我的查询没有考虑到姓名顺序并不重要,并且对于我的代码 Jan Kowal 和 Kowal Jan 是不同的人。
  1. 此外,我使用的代码非常适合我的情况并且可以正常工作,但仅在 SQL Server 上,在 Teradata SQL id 上不起作用:
  1. 我在 Teradata 代码上更改了它,如下所示:

但是上面的代码会产生错误:

SUBSTR:字符串订阅超出范围

  1. 我还尝试了以下方法:

但它会产生错误:

STRTOK:InputString或Delim长度为0;或 toknum 参数不大于 0,

我能做些什么?请帮帮我。

如何在 Teradata SQL 中做到这一点?您能否修改我在 SQL Server 上工作的代码或建议您自己在 Teradata SQL 上工作的解决方案?

0 投票
1 回答
33 浏览

sql - SQL:过去 6 个月内不同月份的 4 次转移以及 Teradata SQL 中标题中的特定单词?

我在Teradata SQL中有如下表:

在此处输入图像描述

我只需要选择这些行,其中:

  1. 标题中有(在任何配置中,不区分大小写)单词:“现金”或“支付”
  2. 在过去 6 个月内(​​2021-01-03 和 2021-07-03 之间)在不同月份至少有4 次转账

因此,我只需要 ID = 111,因为此 ID 在过去 6 个月内至少有 4 个标题包括“现金”或“支付”(在不同月份)

(简而言之,您在过去 6 个月内至少收到了 4 次工资转移——在不同的月份)

我知道我的示例表不适合这种情况,因为它只包含少量行,但我相信描述很清楚!

我需要在Teradata SQL上执行此操作,我该怎么做?

为了更精确:

  1. 转移 -> 是当标题在任何配置中具有“现金”或“支付”时,不区分大小写,
  2. ID 在表中不是唯一的,因为某些 ID 可以接收转移例如 5 次,
  3. 构建表格,您有您的工人的付款清单,并且您想找到他们在过去 6 个月中至少收到 4 次转账(但每次转账在不同月份)
0 投票
0 回答
12 浏览

sql - 如何在 Teradata SQL 中选择具有指定标题和循环重复值的行?

我在 Teradata SQL 中有如下表:

在此处输入图像描述

我只需要选择这些行,其中:

  • 在标题中有(在任何配置中,不区分大小写)单词:“现金”或“支付”

  • 在过去 6 个月内(​​2021-01-03 和 2021-07-03 之间)在不同月份至少有 4 次转账因此,我只需要 ID = 111,因为此 ID 在过去 6 个月内至少有 4标题包括“现金”或“支付”(不同月份)

    ID

    111

(简而言之,您在过去 6 个月内至少收到了 4 次工资转移——在不同的月份)

我需要在 Teradata SQL 上执行此操作,我该怎么做?

为了更精确:

  1. 转移 -> 是当标题在任何配置中具有“现金”或“支付”时,不区分大小写,
  2. ID 在表中不是唯一的,因为某些 ID 可以接收转移例如 5 次,
  3. 构建表格,您有您的工人的付款清单,并且您想找到他们在过去 6 个月中至少收到 4 次转账(但每次转账在不同月份)