【发布时间】:2020-01-23 17:29:10
【问题描述】:
我希望将多行合并为具有匹配 ID 的一行。我正在使用 Teradata SQL。 示例:
SELECT
id_nbr AS ID,
contact_type AS contype,
contact_first_name AS firstName,
contact_last_name AS lastName,
contact_phone_number AS phoneNumber,
contact_address AS address,
contact_email AS email
FROM database.account_info
WHERE (contact_type = 'AAA' OR contact_type = 'BBB' OR contact_type = 'CCC');
结果:
ID contype firstName lastName phoneNumber address email
111111111 AAA bob smith (999)999-9999 1 Main St null
111111111 BBB bob smith (888)888-8888 1 random rd bob@random.com
111111111 CCC bob smith null null bob@anotherrandom.com
我想要什么:
ID contypeAAA firstNameAAA lastNameAAA phoneNumberAAA addressAAA emailAAA contypeBBB firstNameBBB lastNameBBB phoneNumberBBB addressBBB emailBBB contypeCCC firstNameCCC lastNameCCC phoneNumberCCC addressCCC emailCCC
111111111 AAA bob smith (999)999-9999 1 Main St null ......etc
这甚至可能吗?这将极大地帮助我..!提前致谢!
编辑此,ID 的 contype 并不总是具有所有 3 个 contype。这使它变得更加棘手。例如,ID: 99999999 只能有 contype: 'AAA','BBB' 但应该为所有 'CCC' 值返回空值,因为它不存在。
【问题讨论】:
-
最简单的方法是两个自连接。每个联系人类型是否始终存在行,或者是否存在始终存在的联系人类型?
-
每个 ID 并不总是有一个联系人类型,但最多可以有三种不同的(AAA、BBB、CCC)。
-
是否只有 3 个潜在值(整个表),每个 id 最多有 3 个?
-
没有 8 个,但我需要这 3 个(如果每个 ID 都存在)。
-
使用枢轴,应该这样做