Как удалить дублированные результаты и получить правильный счет вместо 1 - PullRequest
0 голосов
/ 08 июля 2019

Мне нужно создать представление, которое показывает каждую категорию животных, тип животного, а также точное количество всех животных.

Я получаю повторяющиеся результаты, подсчет 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

Я ожидаю совпадения категорий, таких как «Собачья млекопитающая», «Птица» - «Птичий» и «Кролик» - «Грызун», и точное количество каждой из них.

Я получаю Пса

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

1 Ответ

0 голосов
/ 08 июля 2019

Вы используете CROSS JOIN, который соединяет каждую строку из одной таблицы с каждой строкой из другой таблицы.Если вы используете предложение WHERE, вам следует исключить дубликаты.

 WHERE pets.stockinfokey = StockInfo .stockinfokey AND
      pets.pettypekey = pettypes.pettypekey
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...