在Access DB中。我需要提取下表中每个项目代码的itemcode / desc组合,其中desc的使用频率最高。
最常见的可能意味着只有一个版本(见pear的新增记录)
在条目代码777的情况下,我将在以后决定使用哪个描述版本。如果有多个记录,每个记录都包含一个描述的单一版本,那么肯定会产生额外的问题。
最初的问题还应该包括返回条目代码的第一行,比如777,其中一个项目代码的所有现有记录都包含一个唯一的描述(因此计数总是1)。第一行可能并不总是正确的版本--但无论如何我都无法自动化该阶段。
---------------------
itemcode | desc
---------------------
123 | apple
123 | apple
123 | apple
123 | apple 2
123 | apple-2
001 | orange
001 | orange
001 | ORANGE 1
001 | orange-1
666 | pear
777 | bananananana
777 | banana所以.我想最后的结果是:
---------------------
itemcode | desc
---------------------
123 | apple
001 | orange
666 | pear
777 | bananananana我想我已经接近了,但是下面的内容只得到数据库中最频繁出现的描述,并且只返回一行。
SELECT itemcode, desc, count(desc)
from table
group by itemcode, desc
having count(desc) =
(
select max(ct) from
(
select itemcode, desc, count(desc) as ct
from table
group by itemcode, desc
)
);返回:
---------------------
itemcode | desc
---------------------
123 | apple发布于 2009-04-23 17:55:59
查询返回最大。找到一种方法来创建一条能够满足您的需求的规则。
“最常出现的”意味着什么?appears>2?appears>3?appear>4?...
发布于 2009-04-23 18:07:37
修复和测试。它的工作方式与设计相同--或者更好,因为如果ItemCode的最高计数多次出现,它会返回所有行。
SELECT ItemCode, ItemDescription, COUNT(ItemDescription) AS ItemCount
FROM Items I1
GROUP BY ItemCode, ItemDescription
HAVING COUNT(ItemDescription) =
(SELECT MAX(ItemCount)
FROM (
SELECT COUNT(ItemDescription) AS ItemCount
FROM Items I2
WHERE I2.ItemCode = I1.ItemCode
GROUP BY ItemDescription
) I3
)更新
只是简化了一下查询。
更新
无法验证它是否适用于Access 2003。尝试过了,但是Access一直在请求I1.ItemCode。
https://stackoverflow.com/questions/782835
复制相似问题