Делать счет более чем на столбец - PullRequest
0 голосов
/ 07 марта 2011

У меня есть следующие таблицы:

**Product**  
ProdID  int  
ProdOwner (nvarchar)  
Views int  


**Reviews**  
RevID int  
RevDate datetime  
ProdOwner  
ProdID  

Если я передаю строку типа «Джейк Билл» (ProdOwner) в мой сохраненный процесс, мне нужно получить следующий вывод

Total Products Owned: 27  
Total Product Views: 78967  
Total Reviews Received on All Products: 89  

Как мне написать этот запрос? Я использую SQL 2008. Вот что я сделал:

CREATE PROCEDURE [dbo].[GetProdCountByOwner]  
(  
   @ProdOwnerName    nvarchar(256)
)  
AS  
SET NOCOUNT ON  

SELECT COUNT(p.ProdID),  Count(p.Views), Count(r.RevID)  FROM Product p join Review r
on p.ProdID = r.ProdID
WHERE p.ProdOwner = @ProdOwnerName
GO

Ответы [ 2 ]

1 голос
/ 07 марта 2011
SELECT COUNT(*) AS [Total Products Owned],
    SUM(p.Views) AS [Total Product Views],
    (SELECT COUNT(*)
      FROM Product p JOIN Reviews r ON p.ProdID = r.ProdID
      WHERE p.ProdOwner = 'Jake Bill'
    ) AS [Total Reviews Received on All Products]
FROM Product p
WHERE p.ProdOwner = 'Jake Bill'
0 голосов
/ 07 марта 2011

Предполагая, что вы получаете слишком высокие результаты (т. Е. Самый высокий счет дается для всех 3)

SELECT
    COUNT(DISTINCT p.ProdID),  SUM(p.Views), Count(DISTINCT r.RevID)
FROM
    Product p LEFT join Review r on p.ProdID = r.ProdID
WHERE
    p.ProdOwner = @ProdOwnerName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...