我试图找出一种方法,当一列中满足多个条件时对 ID 进行一次计数,同时在另一列中显示相同条件的总数。对于同一 ID,第一列的条件可以多次使用,但只需计数一次。有 2 个不同的 subGrp 值(1 和 2),但仅关注其中一个。这是我正在使用的两个表的示例数据:
create table vendor (
subGrp char(1),
subID varchar(10),
subStatus char(1),
subCat char(1) );
insert into vendor (
subGrp, subID, subStatus, subCat)
values ('1','101','A','E'),
('1','105','A','F'),
('1','127','A','F'),
('1','132','A','F'),
('1','133','D','F'),
('1','154','A','F'),
('1','162','A','F'),
('1','167','W','E'),
('1','178','A','F'),
('1','196','A','F'),
('1','200','A','E'),
('1','205','A','F'),
('1','230','A','F'),
('1','231','A','F'),
('1','237','A','F'),
('1','259','A','F'),
('1','260','A','F'),
('1','271','A','F');
create table customer (
cusID varchar(10),
prodType char(1) );
insert into customer (
cusID, prodType
values ('101','Y'),
('105','H'),
('105','Y'),
('127','H'),
('132','H'),
('132','Y'),
('132','Y'),
('132','F'),
('132','Y'),
('133','H'),
('133','S'),
('154','H'),
('154','Y'),
('154','Y'),
('154','Y'),
('154','Y'),
('162','H'),
('162','Y'),
('162','Y'),
('167','J'),
('178','H'),
('196','H'),
('200','Y'),
('205','H'),
('205','Y'),
('230','H'),
('230','Y'),
('230','Y'),
('230','Y'),
('230','Y'),
('231','H'),
('237','H'),
('259','H'),
('259','Y'),
('260','H'),
('271','H');
subGrp 将位于第一列中。在下一列中,我需要计算有多少 cusID 具有 Y、F 或 J prodType,同时具有 A 的 subStatus 和 F 的 subCat。唯一多次使用的值可在 prodType 中找到。
我想要以下结果:
亚组 | 产品类型总计 | 子组总计 |
---|---|---|
1 | 7 | 14 |
因此,在 subGrp 1 中,如果 ID 包含 Y、F 或 J 的任意组合,则有 7 个 ID 仅计数一次,并且总共 14 个 ID 具有 A subStatus 和 F subCat。
它是第三方应用程序和数据库,因此我能做的事情有点有限(例如:使用不同时抛出错误:未找到标量函数)。他们告诉我这是 MS SQL。
另外,我不确定数据类型,因为我对此并不知情,但这就是我的假设。希望这是有道理的。提前致谢。
首先将表格连接在一起,并使用正确的过滤器
vendors
。看起来您需要分组
subGrp
并cusID
检查那些 Y、F、J 值,然后再次分组以subGrp
获得总数。您可以使用条件
MIN
为每个具有这三个值中任意一个的值获取 1 或 nullcusID
。数据库<>小提琴