对于当前项目,我正在创建一个数据模型.有没有哪些资源可以找到一个好的数据模型的"最佳实践"?良好意味着灵活,高效,具有良好的性能,风格......一些示例问题是"列的命名","应该规范化的数据",或"应该将哪些属性导出到自己的表中".来源应该是一本书:-)
我需要使用 select 语句提取行 ID。类似于 oracle 的行 ID 的东西。我将如何在 Teradata 中做到这一点?我正在尝试以下查询,但它抛出错误。
select rowid,emp_id,e_name from test;
Error msg : Syntax error: ROWID not allowed.
Run Code Online (Sandbox Code Playgroud)
提前致谢。
执行此命令会给我带来以下内容(所有列中的所有日期,因此它基本上与SELECT date相同,没有明确):
SELECT DISTINCT date FROM daily ORDER BY date DESC
2013-02-12 16:40:52
2013-02-06 11:48:49
2013-02-06 11:36:41
2013-02-06 11:35:59
2013-02-04 19:38:12
2013-02-04 18:12:30
2013-02-04 09:58:41
2013-02-04 09:43:01
2013-02-04 09:35:51
2013-02-04 09:30:22
2013-02-04 09:24:57
2013-02-04 09:21:09
2013-02-04 08:50:13
Run Code Online (Sandbox Code Playgroud)
我需要的:
2013-02-12
2013-02-06
2013-02-04
Run Code Online (Sandbox Code Playgroud)
有没有办法改变我的日期表并将其转换为YYYY-MM-DD?
如果没有,有没有办法根据当天选择不同的日期?
我试过这个
SELECT *
FROM
( SELECT *
FROM mytable;
);
Run Code Online (Sandbox Code Playgroud)
还有这个
SELECT *
FROM
( SELECT *
FROM mytable
);
Run Code Online (Sandbox Code Playgroud)
为什么这些简单的查询不能在Teradata中执行?
我正在尝试做的是确定(使用Teradata SQL)一个人的邮政编码是否意外地被放在地址线上.我查看了各种论坛,我找不到任何类似的问题.
最终,我想写一些类似的东西:
Where address_line_1 like '%[0-9][0-9][0-9][0-9][0-9]%'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
目标数据库是Teradata 13.x.
我对 SQL 非常陌生,并且在使用 Where 语句时遇到了问题。我正在尝试查看昨天和一周后的支票,除非今天(今天是查询运行的那一天)是星期一,否则我想查看星期五和星期五之前。错误消息是“期望在‘Check_date’和‘=’之间有一些东西。
WHERE
CASE WHEN DAYOFWEEK(date) = 2
THEN (a.check_date = DATE - 3 OR a.check_date = DATE - 10)
ELSE (a.check_date = DATE - 1 OR a.check_date = DATE - 8) END
Run Code Online (Sandbox Code Playgroud) 原始表格(正是我正在使用的表格......所有逗号括号等)
id attributes
1 123(red), 139(red), 123(white), 123(black), 139(white),
2 123(black), 139(white), 123(green),
32 223(blue), 223(red), 553(white), 123(black),
4 323(white), 139(red),
23 523(red),
Run Code Online (Sandbox Code Playgroud)
我需要对属性数字进行分组,以便我的表格看起来像
id attributes
1 123(red, white, black); 139(red, white);
2 123(black, green); 139(white);
32 223(blue, red); 553(white); 123(black);
4 323(white); 139(red);
23 523(red);
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
不幸的是,我无法访问存储过程和函数oreplace .. translate.我以前曾经和Oracle打过交道,这是一个简单的任务,因为有人可以访问存储过程...这里我不知道该怎么做
我有下表
personid talent
1 swim
2 play
1 play
1 swim
2 play
3 swim
3 swim
2 play
Run Code Online (Sandbox Code Playgroud)
因此,人1可以游泳和玩耍.人2只能玩.人3只能游泳.
我需要得到以下结果
personid talent
1 both
2 play
3 swim
Run Code Online (Sandbox Code Playgroud)
我怎么能用这个exists呢?
我试过了
SELECT DISTINCT personid,
CASE WHEN (EXISTS(
SELECT * FROM mytable
-- I got stuck
Run Code Online (Sandbox Code Playgroud)
PS:我有一个很长的解决方案..但我不喜欢它,因为它很长
SELECT DISTINCT dis2.personid , CASE WHEN talcount = 2 THEN 'both'
ELSE talent END AS talent
FROM
(
SELECT personid , COUNT(talent) talcount
FROM
(
SELECT DISTINCT personid , talent
FROM my_table …Run Code Online (Sandbox Code Playgroud) 这是我的Table1
personid
1
?
2
3
4
?
6
Run Code Online (Sandbox Code Playgroud)
这是我的查询
select *
from table2
where personid not in
(
select personid
from table1
)
Run Code Online (Sandbox Code Playgroud)
结果是 nothing
这是我的第二个查询
select *
from table2
where personid not in
(
select personid
from table1
where personid is not null
)
Run Code Online (Sandbox Code Playgroud)
结果是 ok
问题:为什么第一个查询不起作用?我看不出任何逻辑问题.是的,是否可以null提升teradata?