问题标签 [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 投票
2 回答
86 浏览

sql - SQL中如何处理重复记录?

我有一个简单的数据集,如下所示:

员工数据

每当部门 ID 更改或状态代码更改时,我都需要员工的最短开始日期和最长结束日期。

所以我为最小开始日期编写了这个公式 - 从表名组中选择 emp id、dept id、status code、min(start date) by emp id、dept id、status code。

我得到了以下结果: 结果

我的结果中缺少突出显示的日期,因为部门 ID 和状态代码重复了。由于我正在考虑最低开始日期,因此不考虑这些记录。

同样,我也需要获得最大结束日期。

任何帮助将不胜感激。

谢谢。

更新 - 添加示例数据和预期输出。

创建表员工(

emp_id int、start_date 日期、end_date 日期、dept_id int、status_code varchar(100));

插入员工价值观

('2233','1/1/2020','1/25/2020','123','活动'),

('2233','1/25/2020','2/15/2020','123','活动'),

('2233','2/15/2020','3/29/2020','123','活动'),

('2233','3/29/2020','4/11/2020','456','活动'),

('2233','4/11/2020','5/5/2020','456','离开'),

('2233','5/5/2020','6/17/2020','456','活动'),

('2233','6/17/2020','7/22/2020','456','活动'),

('2233','7/22/2020','8/19/2020','789','活动'),

('2233','8/19/2020','9/30/2020','789','终止'),

('2244','1/10/2020','1/25/2020','122','活动'),

('2244','1/25/2020','2/19/2020','122','离开'),

('2244','2/19/2020','3/31/2020','122','活动'),

('2244','3/31/2020','4/11/2020','322','活动'),

('2244','4/11/2020','5/5/2020','322','活动'),

('2244','5/5/2020','6/17/2020','322','活动'),

('2244','6/17/2020','7/22/2020','322','活动'),

('2244','7/22/2020','8/24/2020','422','活动'),

('2244','8/24/2020','9/24/2020','422','终止')

预期产出: 预期产出

0 投票
1 回答
36 浏览

sql - Teradata 中的另一种运行总计

我看过关于运行总数的票,但这有点不同。

假设我有从 2020 年 1 月到最大(日期)的索赔。我想写一个查询,给我 2020 年 1 月的索赔总额,然后是 2020 年 1 月到 2020 年 2 月,然后是 2020 年 1 月到 2020 年 3 月……一直到 1 月到最大(日期),所有这些都在同一个查询中。

每个月都会增加一个月的数据。我希望查询能够解释这一点,而不是硬编码任何东西。

0 投票
1 回答
1062 浏览

sql - 查询包含参数但导入文件包含不同的值 [将 csv 导入 Teradata SQL]

我正在使用 Teradata SQL 导入 CSV 文件。我点击导入激活导入操作,然后输入以下内容

我确保指定了数据库名称以及我希望为表命名的名称,并且我输入了 13 个逗号——我的 CSV 文件中的列数。

它给了我以下错误:

我不知道问题是什么。

0 投票
0 回答
98 浏览

sql - 将数字列添加到 teradata 中的日期列

我在 Teradata 中遇到问题:将数字列作为月份添加到日期以在示例下方获取新的日期列:

在输入中我有

我想要输出

我尝试使用 add_months() 和间隔函数,但它不起作用。我更喜欢不使用 volatile 表,但如果没有其他解决方案,我会使用它。

谢谢 :)

0 投票
0 回答
415 浏览

teradata - 如何在 teradata 中通过 select 语句放置新行?

假设有字符串 = '你好,你好吗?你在吗?'

我希望将字符串拆分为 2 行,基本上想在其间放置一个换行符,以便导出文件(来自 bteq)捕获它。

预期导出文件中的 o/p:

你好
,你好吗?你在吗?

以下解决方案都不能产生预期的输出。

.出口文件=xyz.txt;

sel '你好\n你好吗?你在吗?' sel '你好 Chr(10) 你好吗?你在吗?'

有什么建议么?任何人都可以帮助将换行符打印到导出文件中吗?

0 投票
0 回答
75 浏览

sequence - Teradata 根据前几行创建日期范围窗口

Teradata 数据库

我有一个粗略的去它。我有一个数据集,我想创建一个客户旅程。规则是第一笔交易是一段旅程。至少 30 天后的下一笔交易是旅程。至少在过去 30 天之后的下一次交易也是一个旅程。我无法编程,只能进行常规查询。

有几种情况。客户在数据集中只有 1 笔交易。由于它是唯一的,因此它被标记为旅程。

客户在 5 天内有 2 笔交易。第一个是旅程,第二个不是,因为它是在 30 天内。

客户有 2 笔交易。1/1 和 2/5。它们相隔 > 30 天,因此每个都被标记为旅程。

客户有 3 笔交易。1/1、1/8、2/5。第一个和第三个是旅程,第二个不是(因为它在先前标记的旅程的 30 天窗口内)。

我已经尝试了一切,但似乎总是有一些情况不起作用。

我有我可以写下来的逻辑,但我不知道如何在 teradata 中做到这一点。

  1. 如果 trans_idx=1 则旅程标志 = y
  2. 如果日期 - 以前的 trans_idx 日期 > 30 则 Journey_flag = Y
  3. 这是我能做对的。对于以下逻辑,我无法获得正确的 sql。如果 date - previous trans_idx date < 30 那么我需要累积差异然后对下一行求和。如果它仍然 < 30 我需要累积并总结下一行。一旦超过 30,我需要将该行的旅程标志设置为 Y。

这有效,但它只比较前一行。如果我将其更改为无界,它将查看给定序列的所有行 - 我只需要它返回到前 30 天结束。

0 投票
2 回答
245 浏览

sql - 不是所有的行都通过使用 Teradata 中的 fastload 实用程序从 CSV 文件加载到 Teradata SQL 助手的表中?

我正在练习在 teradata 中使用 Fastload/Multiload 实用程序来加载具有大约 1500000 条记录的示例信用卡数据。数据被加载到 49k 条记录中,并以错误“MaxErr49923”结束。我附上了加载实用程序屏幕截图以及错误日志文件以及我试图加载的示例平面文件(csv)。此外,日期字段(即发行日期和到期日期)始终填充空值。这是我使用的空表查询。

teradata sql 助手中的快速加载工具 错误日志文件详细信息

PS 我知道我已经使用了 MULTISET 表属性,原因是我也需要尝试使用 Multiload。我要加载的文件位于此处的以下链接中。

0 投票
1 回答
35 浏览

sql - DATE BETWEEN 问题

试图仅在一个范围内选择数据。

转换为数值失败。尝试不使用单个刻度,它返回零行,这让我相信该列存储为 VARCHAR。尝试将 bus_dt 列转换为日期格式。 CAST(bus_dt AS DATE FORMAT 'mm/dd/yyyy') BETWEEN 2/14/2020 AND 2/15/2021 再次转换失败。我觉得好像我已经尝试了所有组合,但无法将日期值转换为 yyyy-mm-dd、mm/dd/yyyy 等格式。而且当我帮助查看查看列类型时,我得到“?”。现在有点不知所措。

0 投票
0 回答
243 浏览

sql - 用于格式化数字的 Teradata 函数不起作用

我的选择语句中有这个:

问题是,格式没有应用,列返回是:

设法得到我想要的格式(例如:28.6%)如下,但它似乎并不那么有效。

你知道为什么 FORMAT 功能不起作用吗?

0 投票
1 回答
25 浏览

teradata - Teradata 查询中的正则表达式

我有以下输入字符串:

string1: xyx;;;;str1=P1:P2|str2=1/3|str3=s1:s2

string2: mzn;;;;str1 = P3:P4 | str2 = 2/5

预期结果:对于 string1:str1_val=P1:P2 str2_val=1/3

对于字符串 2:str1_val=P3:P4 str2_val=2/5

我试过 str1_val= REGEXP_SUBSTR('xyx;;;;str1=P1:P2|strt2=1/3|str3=s1:s2', '(?<=str1=)(. ?)(?=|)' ) - 工作正常 str2_val=REGEXP_SUBSTR('xyx;;;;str1=P1:P2|str2=1/3|str3=s1:s2', '(?<=str2=)(. ?)(?=|) ') - 工作正常

对 string1 工作正常,但对 string2 不工作。请帮助一种适用于两种情况的方法