具有多个部分的SQL SELECT语句

时间:2014-11-16 18:38:35

标签: sql-server

我真的在用这个问题挣扎。我完成了前三部分。

我不想回答,我只需要朝着正确的方向前进。

以下是问题:

1)第一列应该提供所有类别名称(名为Category Name的列)

2)第二栏应该为我提供所有销售产品的总折扣价(不是

担心税收或运费)每个类别(名为总订单价值的列)

3)第三栏应该为我提供每个类别中最新订单的日期(列

称为最新订单)。这些日期应该从最后创建的5个订单组中提取。

4)创建一个名为Category Type的第四列,将Basses和Guitars放入'String'

类别类型和“其他”类别类型中的其余工具

按总订单价值从最大值到

组织结果

这是我到目前为止所做的:

   USE MyGuitarShop
   SELECT CategoryName, SUM(DiscountTotal) AS TotalDiscount, MAX(OrderDate) AS NewestOrder
   FROM Categories AS C JOIN Products AS P ON C.CategoryID = P.CategoryID
   JOIN OrderItems AS OI ON P.ProductID = OI.ProductID
   JOIN Orders AS O ON O.OrderID = OI.OrderID
   GROUP BY CategoryName

以下是表格的设置方法:

    Categories:
    CategoryID
    CategoryName


    Products:
    ProductID
    CategoryID
    ProductCode
    ProductName
    Description
    ListPrice
    DiscountPercent
    DiscountAmount
    DiscountPrice
    DateAdded


    Orders:
    OrderID
    CustomerID
    OrderDate
    ShipAmount
    TaxAmount
    ShipDate
    ShipAddressID
    CardType
    CardNumber
    CardExpires
    BillingAddressID

2 个答案:

答案 0 :(得分:0)

如果CategoryType是从CategoryName派生的,那么在select子句部分添加:

CASE WHEN CategoryName = 'Guitar' OR CategoryName = 'Bass' 
  THEN 'String' 
  ELSE 'Other' 
END AS CategoryType

您必须将上述内容添加到GROUP BY部分以及以下内容:

CASE WHEN CategoryName = 'Guitar' OR CategoryName = 'Bass' 
  THEN 'String' 
  ELSE 'Other' 
END

您必须解释如何计算"总订单价值"在我能做" ORDER BY"。

之前

答案 1 :(得分:0)

看到你只需要轻推(4)......看看CASE。祝你好运。