【问题标题】:How to create a new table without duplicates in a field, based on a table that has duplicates in this field?如何根据该字段中具有重复项的表创建一个字段中没有重复项的新表?
【发布时间】:2020-06-17 06:22:51
【问题描述】:

如何在 Access 中根据该字段中存在重复项的表在 PROD_ID 字段中创建没有重复项的新表?

我想要一张这样的桌子:

╔═════════╦═══════════╦═══════════╗
║ PROD_ID ║ ATC_COD_1 ║ ATC_COD_2 ║
╠═════════╬═══════════╬═══════════╣
║      65 ║ D01AC02   ║ D10AE01   ║
║      71 ║ R01BA52   ║ R06AX07   ║
║     101 ║ N02BE51   ║ M03BX05   ║
╚═════════╩═══════════╩═══════════╝

注意:PROD_ID; ATC_COD_1 和 ATC_COD_2 是字段名称。

从这样的表开始:

╔═════════╦═════════╗
║ PROD_ID ║ ATC_COD ║
╠═════════╬═════════╣
║      65 ║ D01AC02 ║
║      65 ║ D10AE01 ║
║      71 ║ R01BA52 ║
║      71 ║ R06AX07 ║
║     101 ║ N02BE51 ║
║     101 ║ M03BX05 ║
╚═════════╩═════════╝

注意:PROD_ID; ATC_COD 是字段名称。

每个 PROD_ID 总是只有两条记录,我不需要任何标准。

【问题讨论】:

  • 原始表中的每个PROD_ID 是否总是有两条记录,或者它们的数量是否可变?在后一种情况下,事情变得相当复杂。你还关心哪个是ATC_COD_1,哪个是ATC_COD_2,如果是,标准是什么?
  • SunKnight0 谢谢,每个 PROD_ID 总是只有两条记录,我不需要任何标准。

标签: sql vba ms-access duplicates


【解决方案1】:

你可以使用聚合:

select PROD_ID,
       min(ATC_COD) as ATC_COD_1,
       if(min(ATC_COD) <> max(ATC_COD), max(ATC_COD), null) as ATC_COD_2 
from t
group by PROD_ID

【讨论】:

  • 我也会考虑使用firstlast,因为 min 可能是最小值而不是表中的第一个值。
  • 如果不是每个 PROD_ID 总是有两条记录,我不在乎哪一条是 ATC_COD_1; ATC_COD_2; ATC_COD_3;等等,你有什么解决办法吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 2020-12-19
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多