访问查询/ SQL - 在一个字段中复制具有不同的多个第二个字段

时间:2015-08-26 18:56:08

标签: sql ms-access

我正在开发一个包含产品和批号的数据库。 Lots表中的每个条目都有一个批号和一个产品描述。

有时会有多个相同批号的记录,例如当重新打包一个项目时会创建一个新记录,但是具有相同的批号和相同的产品描述 - 这很好。但有时候会出现问题,即当两个不同的产品共享相同的批号时。我想找到那些。

换句话说,有三种可能性:

  1. 表格中只有一条记录的批号。
  2. 有多个记录的批号,但产品说明对所有记录都相同
  3. 有多个记录的批号,产品说明不完全相同。
  4. 我需要仅返回 #3,并为该批号和产品说明的每个实例单独记录。

    非常感谢任何帮助。

    enter image description here

    感谢Juan提供的样本数据。使用这个例子,我想返回Id 2-8中包含的数据,但不是返回1,9,10,11。

1 个答案:

答案 0 :(得分:3)

这并不容易,因为很多时候都不使用访问权。

  • 首先使用distinct选择唯一值。
  • 然后使用group by
  • 计算每个手数上显示的不同产品数量
  • 最后加入两个结果并仅显示包含多个描述where total >1
  • 的批次

SELECT id, Product.lotnumber,  Product.Product, total
FROM 
    Product Inner join
    (
    SELECT lotnumber, count(*) as total
    FROM 
        (SELECT distinct lotnumber, product
        FROM Product)
    GROUP BY lotnumber
    ) SubT  On Product.lotnumber = SubT.lotnumber
WHERE total > 1
ORDER BY id

如你所见:

  • lot 2有两个产品(yy和zz)
  • 很多3有三种产品(aa,bb,cc)

enter image description here

我包含了我的产品表:

enter image description here
对不起西班牙语。字段类型是自动数字,短文本和数字