【发布时间】:2025-12-25 17:15:07
【问题描述】:
我有一个包含数千行的表格,看起来有点像这样:
| name | sub_text | sub_code | other_data |
|---|---|---|---|
| a | text1 | code1 | a_data |
| a | text2 | code2 | a_data |
| a | text3 | code3 | a_data |
| a | text4 | code4 | a_data |
| b | text1 | code1 | b_data |
| b | text2 | code2 | b_data |
| c | c_data |
这些记录代表人,其中一些有 4 或 2 行,其中只有 sub_text 和 sub_code 值不同。对于这 4 行或 2 行,有数十个 other_data 列(人的 ID、出生日期和地点等)是相同的。还有一些行没有任何重复,在这种情况下sub_text 和sub_code 值为空。
我想把这张表转换成这样的:
| name | sub_text1 | sub_text2 | sub_text3 | sub_text4 | sub_code1 | sub_code2 | sub_code3 | sub_code4 | other_data |
|---|---|---|---|---|---|---|---|---|---|
| a | text1 | text2 | text3 | text4 | code1 | code2 | code3 | code4 | a_data |
| b | text1 | text2 | code1 | b_data | |||||
| c | c_data |
我需要对记录进行排序,以便一个人只有一条记录,方法是将唯一不同的值添加到新列中,同时保留 other_data 字段和只有一条记录的人一条记录未受影响。
这最初是一个 Excel 表格,我还需要 Excel 中的“转换”表格。我不认为 Excel 可以做这样的事情,所以我创建了一个数据库(我现在只在 Access 中拥有它)希望我可以用 SQL 做更多的事情。我不知道如何解决这个问题。有什么想法吗?
【问题讨论】:
-
在 Windows Excel 2010+ 或 Office 365 中,您可以使用 Power Query 轻松完成此操作。在其他版本中,VBA 解决方案可能是最简单的。
-
数据未针对关系数据库模式进行规范化。将数据重新排列为具有相同类型数据的多个相似名称字段也不是规范化结构。这个数据实际上应该是两个表。