Question:
Insert into table_name (1),(2),....
Teradata 貌似不能同时插入,只能一条一条插入,报错。
后来改为:
Insert into table_name (1);
Insert into table_name (2);
Insert into table_name (3);
...
就可以了。 但是不确定 是不是不能同时插入,还没找到确切的证据!!!
-------------------------------------------------------------
1. 系统变量
SELECT date, time, user, database
-- 当前系统日期, 系统时间, 当前登陆的用户, 当前缺省的数据库
2. Extract
Teradata中EXTRACT函数支持日期数据中选取年.月.日.从时间数据中选取小时.分钟和秒
SELECT DATE; 11/07/2014
SELECT EXTRACT(YEAR FROM DATE); 2014
SELECT EXTRACT(MONTH FROM DATE); 11
SLEECT EXTRACT(DAY FROM DATE); 07
SELECT EXTRACT(MONTH FROM DATE + 17); 12, 先date加17天,再计算month
SLEECT EXTRACT(MONTH FROM DATE) + 17; 29, 先计算month,再加上17
-----------------
SELECT TIME; 14:52:32
SELECT EXTRACT(HOUR FROM TIME); 14
SELECT EXTRACT(SECOND FROM TIME+30
---------------------------------------------------------------
时间差处理,+-interval
例如
SEL current_timestamp,
current_timestamp + interval '1' YEAR -- 年+1
current_timestamp + interval '1' MONTH -- 月+1
current_timestamp + interval '1' DAY -- 日+1
current_timestamp + interval '1' HOUR -- 时+1
current_timestamp + interval '1' MINUTE -- 分+1
3.输入参数
sp: (IN test_variable INTEGER)
调用时,写 : test_variable
----比如: WHERE group_id = : group_id
4. 调用/run某个sp
call dtv_iap_stage.rpt_run_prodqc_group(3) -- 跑group_id 为3的QC report
5. Teradata 里面的NULL 值显示为 ?
如果要把NULL 值转化为其他的,用COALESCE (num, 0) 把num中的NULL 值转化为 0
6. 有时候遇到一个关键词作为列名或者表名,
这时候识别时会出现UDFCALLNAME 错误,只要加上"" 双引号即可。
比如SELECT * FROM DTV_TARGET. "ACCOUNT"
7 Teradata 里面怎么copy表,(相当于select into)
CREATE TABLE new_name AS
(SELECT
--指明列名) WITH NO DATA; -- copy 表结构
WITH DATA; -- copy 表结构和values
此时默认的是 SET table,不允许duplicates
若要保持数据一致,CREATE MULTISET table 即可,保留duplicates