我有一个访问表,该访问表的一列中包含组列表,然后另一列中包含产品列表。我想生成一份报告,以显示所有产品中有多少组,至少有1个产品中有多少组。在给定的表中,我有多达6种产品,并且有5,000多个唯一组。
下面是我要寻找的示例:
表格:
Group | Product
AAAA | 123456
AAAA | 234578
AAAA | 456789
AAAA | 789012
BBBB | 123456
BBBB | 234578
BBBB | 456789
CCCC | 123456
CCCC | 234578
CCCC | 456789
CCCC | 789012
预期结果:
Product 123456 and 234578 and 456789 and 789012 has 2 groups
Product 123456 or 234578 or 456789 or 789012 or has 3 groups
我尝试了以下查询,但仅当它是一种产品或另一种产品时才适用,而不能同时用于两者。我正在寻找产品x,产品y和产品z而不是产品a中的组。
SELECT group
FROM GroupProducts
WHERE
product in (’123456’,’2345678’,’456789’)
and product not in (’789012’)
答案 0 :(得分:0)
尝试使用Count
并按Product
分组:
SELECT Count(group), Product
FROM GroupProducts
WHERE
product in ('123456','2345678','456789')
and product not in ('789012')
GROUP BY product
这假设您的表没有重复项,否则您必须先将其过滤掉
答案 1 :(得分:0)
我想生成一份报告,以显示所有产品中有多少组
假设没有重复的记录,以下查询应返回与数据集中所有产品相关联的所有组的集合:
select t.group from YourTable t group by t.group
having count(t.group) =
(
select count(*) from (select distinct u.product from YourTable u)
)
您可以通过简单地用select count(*)
查询将以上内容括起来来对这些组进行计数:
select count(*) from
(
select t.group from YourTable t group by t.group
having count(t.group) =
(
select count(*) from (select distinct u.product from YourTable u)
)
)
至少有1种产品有多少组
这很容易,因为您可以简单地选择数据集中不同组的数量:
select distinct t.group from YourTable t
然后可以按照与前面所述相同的方式进行计数:
select count(*) from
(
select distinct t.group from YourTable t
)
在上述所有示例中,将YourTable
的所有实例替换为表名。