sql - 如何删除重复的结果并获得正确的计数而不仅仅是 1
问题描述
我需要创建一个视图来显示每个动物类别、动物类型以及动物总数的准确计数。
我得到重复的结果,总数低于 1 并且类别显示不准确。
谁能建议如何解决这些问题
CREATE VIEW vw_PetsPerType
AS
(
SELECT dbo.StockInfo.petQty, dbo.PetTypes.Category, dbo.Pets.Name
FROM dbo.StockInfo CROSS JOIN
dbo.PetTypes CROSS JOIN
dbo.Pets
)
(
SELECT COUNT(Pets.Qty) as 'Total', (Pets.Name), PetTypes.Category
FROM Pets, PetTypes
GROUP BY PetTypes.Category, pets.Name
)
GO
我希望这些类别能够匹配,例如 Dog-Mammal、Bird - Avian 和 Rabbit - Rodent 以及每个类别的准确计数。
我要养狗
Total Animal Category
1 Bird Avians
1 Bird Mammals
1 Bird Rodent
1 Dog Avians
1 Dog Mammals
1 Dog Rodent
1 Rabbit Avians
1 Rabbit Mammals
1 Rabbit Rodent
解决方案
您正在使用 CROSS JOIN 它将一个表中的每一行与另一个表中的每一行连接起来。如果您使用 WHERE 子句,那么您应该消除重复项。
WHERE pets.stockinfokey = StockInfo .stockinfokey AND
pets.pettypekey = pettypes.pettypekey
推荐阅读
- python - pd.DataFrame.join 不断排序
- php - Laravel 的视图总是一样的
- unity3d - 如何在 Unity 中转动基础移动
- html - flexboxgrid,width=100vw,height=100vh,滚动条仍然显示
- qt - Qt:将项目插入我的模型以提示视图重新检查 canFetchMore 时会发出什么?
- php - 将控制器动作添加到奏鸣曲页面
- java - Java 密码在不同的环境中表现不同
- php - 如何在视图页面上显示 jquery 远程错误消息?
- .htaccess - .htaccess 错误:无法使用 html 和 php 重定向自定义 400,404,500 错误页面
- javascript - 无法解决“无法读取 null 的属性 X”错误