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

Sql 创建显示客户订单的过程:汇总各个年份的订单数量和金额。程序输入时的客户ID,sql,sql-server,northwind,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

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

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 

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

这是你想要的吗

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
    中的所有列指定一个别名,以便您知道它们应该做什么
  • 表别名使查询更易于编写和读取
  • 限定所有列名,以便知道它们来自哪个表
  • 分组依据
    中的唯一表达式应该是
    选择
    中的未聚合列

当然可以。现在,我明白了一切。非常感谢:)