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

你是说已经售出的产品数量和从未售出的产品数量?非常感谢。成功了。我们能不能也用工会来解决这个问题。我想在这个问题中证明联合。