创建显示客户订单的程序:各个年份的汇总数量和数量订单。输入程序

时间:2019-01-13 14:51:19

标签: sql sql-server northwind

我的程序有问题,因为我不知道如何计算单个年份的订单数量

CREATE PROCEDURE Orders @id VARCHAR(10) 
AS 
    SELECT unitprice * quantity Amount, 
           Count([order details].orderid), 
           Year(orderdate) 
    FROM   [order     details] 
           INNER JOIN orders 
                   ON [order details].orderid = orders.orderid 
    WHERE  customerid = @id 
    GROUP  BY unitprice * quantity, 
              Year(orderdate), 
              [order details].orderid 

我必须按年份分组,但是我不知道该怎么做。请帮助我某人:)

1 个答案:

答案 0 :(得分:1)

这是您想要的吗?

SELECT YEAR(o.OrderDate) as yyyy, 
       SUM(od.UNITPRICE*od.QUANTITY) as Amount,
       count(*) as num_orders
FROM [Order Details] od INNER JOIN
     Orders o
     on od.OrderID = o.OrderID
WHERE o.CustomerID = @id 
GROUP BY Year(OrderDate);

注意:

  • SELECT中的所有列提供别名,这样您就知道它们应该在做什么。
  • 表别名使查询更易于编写和阅读。
  • 限定所有列名,以便知道它们来自哪个表。
  • GROUP BY中唯一的表达式应该是SELECT中的未聚合列。