标签: teradata

在create/insert上添加一个序列号 - Teradata

在oracle中,我们将在创建此表时在select上使用rownum.现在在teradata,我似乎无法让它工作.除非我一起使用3列,否则我没有可以排序的列并且具有唯一值(大量重复).

旧的方式是这样的,

create table temp1 as 
  select
    rownum as insert_num,
    col1,
    col2,
    col3
  from tables a join b on a.id=b.id
;
Run Code Online (Sandbox Code Playgroud)

sql row-number teradata

3
推荐指数
1
解决办法
3万
查看次数

通过划分两个数字找到商数的最快方法

我必须根据以下实现做一些逻辑.

我有一个高达36位的大数字,例如913695089923267549815145223638290430(由不同的应用程序随机生成).我需要将它除以任何长度较小的数字,例如70368844197664;(由不同的应用程序随机生成)假设我得到商数为19956694.3256

对于我的代码,只有十进制前的商的最后一位数(即4)很重要.目的是检查商是偶数还是奇数,如果可能的话也是最后一位数的值.

我不能使用简单的DB函数,如模数或除法,因为它非常耗时.有没有更快捷的有效方式?任何建议将受到高度赞赏.

非常感谢.

关心Neeraj

mysql sql-server oracle teradata

3
推荐指数
1
解决办法
1742
查看次数

选定的非聚合值必须是关联组的一部分

我在Teradata中有两个表:Table_A和Table_B.他们之间是LEFT JOIN.之后我正在制作SELECT语句,其中包含两个表的属性:

SELECT
attribute_1
attribute_2
...
attribute_N
Run Code Online (Sandbox Code Playgroud)

后来,我使用SUM函数进行某些计算.这些函数看起来像这样:

SUM (
CASE WHEN Attribute_1 > 2 THEN attribute_2*1.2
ELSE 0
End
Run Code Online (Sandbox Code Playgroud)

(在此示例中,使用选择部分中的属性).

但我也在CASE部分属性中使用了不在select语句中的东西 - 有点谎言:

SUM (
CASE WHEN Attribute_X > 2 THEN attribute_Y*1.2
ELSE 0
End
Run Code Online (Sandbox Code Playgroud)

当然最后我正在做GROUP BY 1,2,...,N

我得到的错误是"选定的非聚合值必须是关联组的一部分." 此外,我已经检查了SELECT部分​​中所选属性数十亿倍,它是N.问题是 - 为什么我会收到此错误?是因为我在SUM部分使用,即CASE部分属性(attribute_X和attribute_Y),它们不包含在SELECT部分​​中?

最终陈述的蓝图看起来很像.像这样:

INSERT INTO table_new

SELECT
attribute_1,
attribute_2,
...
attribute_N,

SUM (
CASE WHEN Attribute_1 > 2 THEN attribute_2*1.2
ELSE 0
End
) as sum_a,

SUM (
CASE WHEN Attribute_X > 2 THEN attribute_Y*1.2
ELSE 0
End
) …
Run Code Online (Sandbox Code Playgroud)

sql group-by case teradata

3
推荐指数
1
解决办法
3万
查看次数

Teradata SQL中的多个连接 - 更快地使用子查询或临时表?

我正在为Teradata编写SQL.我需要使用连接来连接多个表中的数据.通常使用子查询或创建临时表并一次追加一个连接列更快吗?我正在尝试自己测试,但网络流量使我很难分辨哪个更快.

例A:

SELECT a.ID, a.Date, b.Gender, c.Age
FROM mainTable AS a
LEFT JOIN (subquery 1) AS b ON b.ID = a.ID
LEFT JOIN (subquery 2) AS c ON c.ID = a.ID
Run Code Online (Sandbox Code Playgroud)

或者我可以......

例B:

CREATE TABLE a AS (
 SELECT mainTable.ID, mainTable.Date, sq.Gender
 FROM mainTable
 LEFT JOIN (subquery 1) AS sq ON sq.id = mainTable.ID
)
CREATE TABLE b AS (
  SELECT a.ID, a.Date, a.Gender, sq.Age
  FROM a
  LEFT JOIN (subquery 2) AS sq ON sq.id = a.ID
)
Run Code Online (Sandbox Code Playgroud)

假设我之后清理了所有东西,一种方法比另一种更好吗?再一次,我想自己测试一下,但网络流量有点让我感到困惑.

编辑: …

sql teradata

3
推荐指数
1
解决办法
2万
查看次数

在teradata sql中完成数据透视

假设我有一个返回如下值的查询:

id    type     value
aaa   1a        10
aaa   1b        20
aaa   1c        7
bbb   2a        10
bbb   1a        5
Run Code Online (Sandbox Code Playgroud)

有超过5000万行和240种可能的"类型".我想建立一个枢轴,每个id都有一行,每个type都是它自己的列:

id   1a   1b   1c   2a
aaa  10   20   7    
bbb  5              10
Run Code Online (Sandbox Code Playgroud)

我可以在SQL服务器中执行此操作,但我不知道如何在Teradata中执行此操作.制作CASE语句的列数太多了.但是,每个不同的type都在表字段中,如果有任何帮助的话.

teradata

3
推荐指数
1
解决办法
2万
查看次数

计算Teradata中的前一周数据

如何计算前7天的数据(上周的周日至周六).在一周的任何一天运行它应该总是给上周的周日 - 周六.谢谢

teradata weekday

3
推荐指数
1
解决办法
5348
查看次数

如何使用Teradata SQL检查字段是否包含所有数值?

我正在寻找类似于ISNUMERIC()T-SQL和Teradata SQL的功能.如果字符类型字段中包含的数据都是数字,我想要一个返回布尔值(或数字1/0)的简单方法.

例如:

我的专栏包含以下记录:'001''ABC'

我希望查询返回:1(或True)0(或False).

是否存在类似于ISNUMERIC()TD原生支持的方法?我找到了一些我可以使用的正则表达式的选项,但是想在查看这条路径之前是否有更简单的方法.如果不存在这样的方法,我愿意接受有关完成此方法的建议.

teradata

3
推荐指数
1
解决办法
1万
查看次数

错误:字符串包含不可翻译的字符-TERADATA(用于REGEXP_REPLACE操作)

我需要清理一个字符列,为此我正在Teradata 14中使用REGEXP_REPLACE函数。

相同的代码可用于其他数据源(具有相同的LATIN编码)。

使用show table的数据定义给了我以下数据格式:

CREATE SET TABLE pp_oap_cj_t.dc_loss_fdr_kn ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT,
     DEFAULT MERGEBLOCKRATIO
( PARENT_ID DECIMAL(38,0),
 FS_MRCH_NM VARCHAR(25) CHARACTER SET LATIN NOT CASESPECIFIC
) PRIMARY INDEX ( PARENT_ID );
Run Code Online (Sandbox Code Playgroud)

我正在执行的查询如下:

CREATE TABLE pp_oap_pb_piyush_t.CHECKMERCHANT1 AS (
 SELECT 
 FS_MRCH_NM,
REGEXP_REPLACE(trim(Upper(trim(REGEXP_REPLACE( (FS_MRCH_NM ) , '[^a-z]',' ',1,0,'i'))) ), '[[:space:]]+',' ',1,0,'i')   as cleaned_merchant
 FROM pp_oap_pb_piyush_t.CHECKMERCHANT)
  WITH DATA PRIMARY INDEX (FS_MRCH_NM);
Run Code Online (Sandbox Code Playgroud)

错误

CREATE TABLE Failed. 6706:  The string contains an untranslatable character.
Run Code Online (Sandbox Code Playgroud)

我需要快速解决这个瓶颈。

帮助真的很感激!谢谢 …

sql teradata regexp-replace

3
推荐指数
1
解决办法
7438
查看次数

R:连接到Teradata时JDBC()找不到Java驱动程序路径

我试图通过RStudio连接到Teradata,但是由于某种原因,JDBC函数在识别Java驱动程序所在的路径时遇到了问题。请参见下面的代码:

library(RODBC)
library(RJDBC)
library(rJava)

# both Java drivers definitely exist 
file.exists('/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/tdgssconfig.jar')
[1] TRUE

file.exists('/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/terajdbc4.jar')
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

但是当我将这些路径粘贴到JDBC调用中时...

# allow more elaborated error messages to appear 
.jclassLoader()$setDebug(1L) 

drv = JDBC("com.teradata.jdbc.TeraDriver","/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/tdgssconfig.jar;/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/terajdbc4.jar")
Run Code Online (Sandbox Code Playgroud)

...我收到以下错误:

RJavaClassLoader:将'/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/tdgssconfig.jar;/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/terajdbc4.jar'添加到URL类路径加载器中警告:路径' / Users / KULMAK / Documents / TeraJDBC__indep_indep.16.10.00.03 / tdgssconfig.jar; /Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/terajdbc4.jar'不存在,它将不会添加到内部类路径中!RJavaClassLoader:已添加 将'/Library/Frameworks/R.framework/Versions/3.4/Resources/library/RJDBC/java/RJDBC.jar'到URL类路径加载器RJavaClassLoader:添加Java存档文件'/Library/Frameworks/R.framework/Versions/ 3.4 / Resources / library / RJDBC / java / RJDBC.jar到内部类路径RJavaClassLoader@3d4eac69.findClass(com.teradata.jdbc.TeraDriver)-URL加载器找不到它:java.lang.ClassNotFoundException:com.teradata .jdbc.TeraDriver RJavaClassLoader.findClass(“ com.teradata.jdbc.TeraDriver”)-尝试使用类路径“ /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/java”目录,可以获取'/ Library / Frameworks / R.framework / Versions / 3.4 / Resources / library / rJava / java / com / teradata / …

java r jdbc teradata

3
推荐指数
1
解决办法
5259
查看次数

在Teradata中创建幻影表

我正在使用Teradata 16.20.05.01运行以下脚本:

create table t1(v int not null);
create table t2(w int null);
alter table t1 add constraint pk primary key (v);
alter table t2 add constraint t2_fk foreign key (w) references t1 (v);
Run Code Online (Sandbox Code Playgroud)

添加外键后,我突然在架构中得到一个多余的表:

select TableName, RequestText
from "DBC".Tables
where DatabaseName = 'test'
and (TableName like 't1%' or TableName like 't2%')
Run Code Online (Sandbox Code Playgroud)

输出:

TableName |RequestText                                                           |
----------|----------------------------------------------------------------------|
t1        |alter table t1 add constraint pk primary key (v)                      |
t2        |create table t2(w int null)                                           |
T2_0      |alter table t2 add …
Run Code Online (Sandbox Code Playgroud)

sql teradata

3
推荐指数
1
解决办法
167
查看次数

标签 统计

teradata ×10

sql ×5

case ×1

group-by ×1

java ×1

jdbc ×1

mysql ×1

oracle ×1

r ×1

regexp-replace ×1

row-number ×1

sql-server ×1

weekday ×1