Sql server 2012 AdventureWorks2012:SQL确定曾经和从未像在一个数据集中那样销售的产品总数
我是一名学生,花了足够的时间来完成这项工作。有人能帮我吗 问题是:确定曾经销售过的产品总数和从未销售过的产品总数,就像在一个数据集中一样 我猜联合、交叉和除外将用于生产。产品和销售。销售订单详情Sql server 2012 AdventureWorks2012:SQL确定曾经和从未像在一个数据集中那样销售的产品总数,sql-server-2012,Sql Server 2012,我是一名学生,花了足够的时间来完成这项工作。有人能帮我吗 问题是:确定曾经销售过的产品总数和从未销售过的产品总数,就像在一个数据集中一样 我猜联合、交叉和除外将用于生产。产品和销售。销售订单详情 有人能帮我吗如果我正确理解了这个问题,那么这应该行得通 SELECT SUM(CASE WHEN s.ProductId IS NULL THEN 1 ELSE 0 END) TotalProductsUnsold , SUM(CASE WHEN s.ProductId IS NULL
有人能帮我吗如果我正确理解了这个问题,那么这应该行得通
SELECT
SUM(CASE WHEN s.ProductId IS NULL THEN 1 ELSE 0 END) TotalProductsUnsold
, SUM(CASE WHEN s.ProductId IS NULL THEN 0 ELSE 1 END) TotalProductsSold
FROM Production.Product p
LEFT JOIN (
SELECT DISTINCT ProductId
FROM Sales.SalesOrderDetail
) s ON s.ProductId = p.ProductId
使用union和,除非您可以执行以下操作
SELECT
'Total Products Unsold'
, COUNT(ProductId) [Count]
FROM (
SELECT
ProductId
FROM Production.Product
EXCEPT
SELECT ProductId
FROM Sales.SalesOrderDetail
) Products
UNION ALL
SELECT
'Total Products Sold'
, COUNT(DISTINCT ProductId) [Count]
FROM Sales.SalesOrderDetail
如果您不能使用/不想使用COUNT(DISTINCT…
,则第二个unioned select语句可以替换为
SELECT
'Total Products Unsold'
, COUNT(ProductId) [Count]
FROM (
SELECT
ProductId
FROM Production.Product
INTERSECT
SELECT ProductId
FROM Sales.SalesOrderDetail
) Products
你是说已经售出的产品数量和从未售出的产品数量?非常感谢。成功了。我们能不能也用工会来解决这个问题。我想在这个问题中证明联合。