查询返回个人最近的订单,订单日期,订单中的产品数量和总金额

问题描述 投票:1回答:3

需要查询帮助以返回每个人最近的订单,订单日期,订单中的产品数量和总金额。我有点想要获得产品数量和总数。

这是表格图

不确定我是否应该使用多个连接或子查询:

SELECT FirstName, LastName, MAX(O.OrderDate), O.OrderDate
FROM Customer C 
    INNER JOIN Order O ON C.CustomerID = O.CustomerID
sql sql-server
3个回答
0
投票

product等假设的暗表开始总是好的做法。这个查询应该有所帮助。最好汇总数量和金额以获得总体水平的结果

SELECT FirstName
    ,LastName
    ,max(o.orderdate) Orderdate
    ,Sum(Quantity) Quantity
    ,Sum(TotalAmount) TotalAmount
FROM Product p
INNER JOIN Orderitem oi
    ON Oi.product_id = p.id
INNER JOIN
ORDER o
    ON o.id = oi.order_id
INNER JOIN Customer c
    ON c.id = o.Customer_id
GROUP BY FirstName
    ,LastName

0
投票

不确定你是否想要聚合但是你去了:

SELECT customer.firstname, customer.lastname, COUNT(DISTINCT orderitem.productid), [order].totalamount 
FROM [order] LEFT JOIN customer ON [order].customerid=customer.id LEFT JOIN orderitem ON order.id=orderitem.orderid 
WHERE [order].date=MAX([order].date)
GROUP BY customer.firstname,customer.lastname, [order].totalamount

仍然不知道你为什么要在最后一个订单中使用where子句,这取决于你是否保留condtion。


-1
投票

1。使用子查询过滤掉您需要的订单,为每个客户选择具有最大订单日期的orderid。

第2位。从订单表中选择您需要的所有内容,然后从表订单项中加入一个包含所需分组的子查询。

像这样的东西:

select o.*, oi.*
from order as o
left join (
    select count(*) as oi_cnt, 
        sum(unitprice*quantity) as oi.sum, 
        order_id 
    from orderitem 
    group by order_id
    ) as oi 
on oi.order_id = o.id
where exists 
    (select max(o2.orderdate) as md, 
        o2.customerid 
    from order as o2
    group by o2.customerid
    having o2.md = o.orderdate
        and o2.customerid = o.customerid
    )
© www.soinside.com 2019 - 2024. All rights reserved.