问题标签 [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 回答
58 浏览

sql - 单表复杂场景 Teradata 查询

问题 :

仅当还有一行包含Type='Travel' 在同一日期的同一 Act_ID 内。否则忽略。(应始终出现现场维修类型的记录)

Type = "Onsite Repair" OR Type = ("Calibration", "Interface Troubleshooting", "Setup/Configuration","Customer Applications") 仅当在同一个 Act_ID 上还有一行 Type="Travel" 时日期。否则忽略类型。

  • 源数据
ACT_ID 类型 START_TS END_TS
ACTID1 旅行 2016 年 7 月 20 日 13:00 2016 年 7 月 20 日 15:30
ACTID1 接口故障排除 2016 年 7 月 20 日 15:30 2016 年 7 月 20 日 19:00
ACTID1 旅行 2016 年 7 月 20 日 19:00 2016 年 7 月 20 日 21:00
ACTID1 旅行 2016 年 9 月 20 日 13:00 2016 年 9 月 20 日 15:30
ACTID1 现场维修 2016 年 9 月 20 日 15:30 2016 年 9 月 20 日 23:30
ACTID1 旅行 2016 年 9 月 21 日 13:00 2016 年 9 月 21 日 15:30
ACTID1 现场维修 2016 年 9 月 21 日 15:30 2016 年 9 月 21 日 23:30
ACTID1 旅行 2016 年 9 月 22 日 13:00 2016 年 9 月 22 日 15:30
ACTID1 现场维修 2016 年 9 月 22 日 15:30 2016 年 9 月 22 日 23:30
  • 预期数据
ACT_ID 类型 START_TS END_TS
ACTID1 接口故障排除 2016 年 7 月 20 日 15:30 2016 年 7 月 20 日 19:00
ACTID1 现场维修 2016 年 9 月 20 日 15:30 2016 年 9 月 20 日 23:30
ACTID1 现场维修 2016 年 9 月 21 日 15:30 2016 年 9 月 21 日 23:30
ACTID1 现场维修 2016 年 9 月 22 日 15:30 2016 年 9 月 22 日 23:30
0 投票
2 回答
37 浏览

sql - 选择 ID 在列表中的 rowst 并满足其他 2 个要求,可能是 Teradata SQL 中的子查询?

我在 Teradata SQL 中有如下表:

我有客户 ID 列表:

我需要从 myList 上的表中选择满足要求的客户 ID:

  1. 在 col1 值是“A”或“B”
  2. 在 col2 值大于 10 (>10)

因此,我需要如下所示:

因为 ID = 111 并且是 on myList,所以 col1 是“A”或“B”,并且 col2 中的值大于 10。

如何在 Teradata SQL 中做到这一点?可能在子查询中?

0 投票
1 回答
42 浏览

sql - 当视图中已经包含 where/filter 子句时,在选择视图上添加 where/filter 子句会发生什么?

我在视图中使用联合并过滤掉所有具有EQNECF如下所示的项目:

现在,如果我再次过滤视图

我确实有记录!视图不应该过滤掉EQor NECF。当我对视图进行第二次选择查询时,我应该收到 0 条记录?

0 投票
2 回答
60 浏览

sql - 为什么 WHERE 子句从结果中删除空值?

我有一个要从中过滤数据的表。我尝试了以下查询

现在,当我在其中添加 WHERE 子句时,它会过滤掉空值。查询不等于 (<>)。我怎样才能避免这种情况并在我的结果中仍然有空值?将 null 更改为空白或空格?

0 投票
0 回答
35 浏览

google-bigquery - 我想将 BTEQ 转换为 BQ 等价物。想知道如何在 BigQuery 中设置返回码

BTEQ 脚本之一具有以下代码

我想将其转换为 BigQuery 等价物。我应该怎么做?请帮助我如何在 BigQuery 中设置返回码。

0 投票
1 回答
708 浏览

sql - 如何在sql中提取没有时区的时间戳并且不将其转换为字符串进行操作?

我正在尝试从具有时区数据类型列的时间戳中提取本地时间戳。

我目前有下表架构:

我能够将时间戳转换为日期格式,而无需 teradata 对其强制时区,如下所示:

结果:

从上面的第一条记录来看,如果应用了时区,日期应该是2021-06-02

我想要做的是提取时间戳而不 td 自动将时区添加到结果中。

我希望得到如下结果,没有时区的列时间戳:

如果我确实转换为timestamp(0),则最终结果是时间戳,包括我不想要的时区。td 会自动给我时间戳+时区。

结果:

编辑:

只有当我将其转换为VARCHAR然后使用INSTR等删除正确的 6 个字符时,我才能从时间戳列中提取时区值。这需要大量的字符串操作

TD中的内置功能/选项没有另一种方法吗?

结果:

0 投票
1 回答
55 浏览

sql - 如何根据 Teradata SQL 中的复杂条件选择 Teradata SQL 中的行?

我在 Teradata SQL 中有如下表:

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

  1. 在 col2 中是 col1 的值 + 更多的东西(没关系之前或之后)
  2. 请注意,Jan Kowal 和 Kowal Jan 是姓名和姓氏,可以交换
  3. Case = False(不管字母是高还是小)

所以我只需要选择第一行和第二行:

  • 因为两行都具有来自 col1 的值 + col2 中的更多内容(之前或之后)
  • 字母大小写 = False
  • name 和 surname 可以交换
0 投票
2 回答
69 浏览

sql - 如何从 Teradata SQL 的 1 列中包含的 name 和 surename 创建 2 个新列?

我在 Teradata SQL 中有如下表:

姓名
约翰逊西蒙
什么安
皮特豪斯马克
格拉哈普·迈克尔·乔什

列中的此表:“NAME”包含客户的姓名和姓氏,但请注意,有时客户可能有两个成员的姓氏或有两个名字。

结果我需要:

姓名 NAME_2
约翰逊西蒙 约翰逊 西蒙
什么安 什么是
皮特豪斯马克 皮特之家 标记
格拉哈普·迈克尔·乔什 格拉哈普 迈克尔·乔什

我认为可以做到,我们可以将“NAME”列中的第一个值带到第一个空格,它将是 SURNAME 列的值,其余值给 NAME_2,但我不知道如何写在 Teradata SQL 中,或者您可能有其他想法如何解决此问题?

0 投票
1 回答
165 浏览

oracle - 如何通过将一行与其下一行进行比较来填充新列

我发现很难编写查询以获得所需的输出。我需要获取两个连续行之间的日期差异,如果日期差异 <=6 个月并且原因代码有效“是”,那么新列应该填充值“是”,否则为“否”

我必须根据下面给出的标准用值“是”或“否”填充新列
标准 1
对于第一行,新列值应始终为“否”从第二行开始,如果两个日期差异 <=6 moths 和原因代码有效,则新列值应为“是”,否则为“否”
,第一行和第二行的日期差异 <=6 个月,代码有效“是”,因此新列值为“是”。
第二行和第三行的日期差异 <=6 个月,但有效为“否”,因此新列值为“否”。
第三行和第四行的日期差异超过 6 个月,但有效为“是”,因此新列值为“否”。
输出应如下所示

卡斯蒂德 输入日期 代码 有效的 新列
123 2020-04-11 商业银行 是的
123 2020-06-13 美国广播公司 是的 是的
123 2020-09-01 胎牛血清
123 2021-05-01 美国广播公司 是的
123 2021-07-05 美国广播公司 是的 是的

标准 2:
如果原因代码以“RQT”开头并且任何有效代码后跟 RQT(即使日期差为 6 个月且原因代码有效),则新列应为下一个连续行的“否”,输出与原样相同。

卡斯蒂德 输入日期 代码 有效的 新列
345 2020-02-19 RQT 是的
345 2020-03-22 商业银行 是的
345 2020-06-18 RQT 是的 是的
345 2020-10-29 商业银行 是的 是的
345 2021-03-24 美国广播公司 是的 是的
卡斯蒂德 输入日期 代码 有效的 新列
346 2020-02-19 RQT 是的
346 2020-03-22 RQT 是的
346 2020-06-18 RQT 是的 是的
346 2020-10-29 商业银行 是的 是的
346 2021-03-24 RQT 是的 是的
0 投票
3 回答
331 浏览

sql - 如何生成具有开始月份日期和结束月份日期的动态表 Teradata 或 SAS SQL

我想生成一个动态表,其中一个月的开始日期作为一列,一个月的结束日期作为另一列。

理想情况下,我想提供两年,即 2016 年和 2021 年。提供这两年时我希望得到的输出如下:

请注意,我需要从 2016 年到 2021 年的所有年份的输出。在我上面的示例中,这意味着应该包括 2017 2018 2019 2020。

我曾尝试使用 Teradata 的时间序列函数,但未能获得结果。

我尝试在 Teradata 中重新创建的解决方案是:如何生成具有开始月份日期和结束月份日期的日历表

此外,我尝试了 Teradata 的 EXPAND ON PERIOD 时间序列功能。