视图中的SQL计数为列
我试图在视图中将计数的结果作为列获取。 请参阅下面的查询,了解我想要的东西的演示(这只是为了演示) 这显然不起作用。。。但我想知道这样做的正确方法是什么 我正在使用SQL Server,请尝试以下操作:视图中的SQL计数为列,sql,sql-server,sql-server-2005,view,count,Sql,Sql Server,Sql Server 2005,View,Count,我试图在视图中将计数的结果作为列获取。 请参阅下面的查询,了解我想要的东西的演示(这只是为了演示) 这显然不起作用。。。但我想知道这样做的正确方法是什么 我正在使用SQL Server,请尝试以下操作: SELECT ProductID, Name, Description, Price, count(*) as totalnumberoforders FROM tblProducts prod LEFT JOIN tblOrders ord
SELECT
ProductID,
Name,
Description,
Price,
count(*) as totalnumberoforders
FROM tblProducts prod
LEFT JOIN tblOrders ord ON prod.ProductID = ord.ProductID
group by
ProductID,
Name,
Description,
Price
如果您删除了联接,则查询实际上会起作用-它没有实际使用,并且会导致中的ord表与您已联接到的ord表冲突:
SELECT
ProductID,
Name,
Description,
Price,
(SELECT COUNT(*) FROM ord WHERE ord.ProductID = prod.ProductID) AS TotalNumberOfOrders
FROM tblProducts prod
或者,您可以结合使用联接表:
如果您只对已订购的产品感兴趣,您可以简单地用内部联接替换左侧外部联接操作:
SELECT
prod.ProductID,
prod.Name,
prod.Description,
prod. Price,
COUNT(*) AS TotalNumberOfOrders
FROM tblProducts prod
INNER JOIN tblOrders ord ON prod.ProductID = ord.ProductID
这将有助于:
SELECT
ProductID,
Name,
Description,
Price,
COUNT(ord.ProductId) AS TotalNumberOfOrders
FROM tblProducts prod
LEFT JOIN tblOrders ord
ON prod.ProductID = ord.ProductID
GROUP BY
ProductID,
Name,
Description,
Price
“COUNT(ord.ProductId)”子句确保如果没有找到订单,TotalNumberOfOrders将等于零
[稍后编辑:我忘记了GROUPBY子句。Doh!]
SELECT
prod.ProductID,
prod.Name,
prod.Description,
prod. Price,
COUNT(*) AS TotalNumberOfOrders
FROM tblProducts prod
INNER JOIN tblOrders ord ON prod.ProductID = ord.ProductID
SELECT
ProductID,
Name,
Description,
Price,
COUNT(ord.ProductId) AS TotalNumberOfOrders
FROM tblProducts prod
LEFT JOIN tblOrders ord
ON prod.ProductID = ord.ProductID
GROUP BY
ProductID,
Name,
Description,
Price