【发布时间】:2014-11-25 05:00:21
【问题描述】:
我有一个简单的表,有 2 列:ID(整数)和类别(字符串),每个 ID 可以重复几个类别,如下所示:
ID Cat
--- ---
1 A
1 B
2 B
3 A
3 B
3 C
我想重塑这张表,使每个唯一的类别都是一个虚拟变量(如果 ID 有,则为 0/1):
ID A B C
--- -- -- --
1 1 1 0
2 0 1 0
3 1 1 1
现在,如果唯一类别的集合是已知的(并且很小),这是一个简单的 CASE WHEN 语句 x 否。独特的类别。
我的问题是:
a) 如果它不是未知的或真的很大怎么办?如何自动创建这种“CASE WHEN”效果?
b) 更重要的是:我不一定对所有类别感兴趣(比如只对“A”和“B”的虚拟对象)感兴趣,而只对我在一个名为 Cats 的单独表中的类别感兴趣,这是一个简单的 1 列我的相关类别(同样,不知道有多少),例如:
Cat
---
A
B
如何仅为此动态表中的类别创建虚拟变量?
您认为所有这些都应该在其他工具中完成吗?吗?
谢谢!
(我将 Teradata SQL 与 SQLA 一起使用,但我认为这是一个一般性的 SQL 问题)
【问题讨论】: