-1

私は学生で、これを完了するのに十分な時間を費やしています。誰かがこの質問を手伝ってくれませんか: 1 つのデータ セットのように、これまでに販売された製品の総数と販売されたことのない製品の総数を決定します。

Union 、 Intersection 、および Except は、Production.Product および sales.salesOrderDetail では使用できないと思います。

誰か助けてくれませんか

4

1 に答える 1

0

質問を正しく理解していれば、これはうまくいくはずです

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

ユニオンを使用して、次のようなことができます。

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 ...)は、2 番目の結合された select ステートメントを次のように置き換えることができます。

SELECT 
    'Total Products Unsold'
    , COUNT(ProductId) [Count]
FROM (
    SELECT
        ProductId
    FROM Production.Product 
    INTERSECT
    SELECT ProductId
    FROM Sales.SalesOrderDetail
) Products
于 2013-03-29T10:34:03.140 に答える