Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL如何从所有客户检索上一次订购的2种产品?_Sql_Sql Server_Datetime_Where Clause_Greatest N Per Group - Fatal编程技术网

SQL如何从所有客户检索上一次订购的2种产品?

SQL如何从所有客户检索上一次订购的2种产品?,sql,sql-server,datetime,where-clause,greatest-n-per-group,Sql,Sql Server,Datetime,Where Clause,Greatest N Per Group,这是我当前的查询: SELECT c.name, c.email, c.phone, sol.description, so.orderDate FROM SalesOrderLine sol JOIN SalesOrder so ON sol.salesOrderID = so.id JOIN Customer c ON so.customerID = c.id WHERE (orderDate >= '2020-05-01' AND

这是我当前的查询:

SELECT 
    c.name, c.email, c.phone, sol.description, so.orderDate 
FROM 
    SalesOrderLine sol
JOIN 
    SalesOrder so ON sol.salesOrderID = so.id
JOIN 
    Customer c ON so.customerID = c.id
WHERE 
    (orderDate >= '2020-05-01' AND orderDate <= '2020-09-09')
    AND (description LIKE '%Seed Mix%' OR description LIKE '%Sesame Seeds (Natural)%')
ORDER BY 
    c.name
选择
c、 姓名,c.电子邮件,c.电话,sol.description,so.orderDate
从…起
销售订单线
参加
SalesOrder so ON sol.salesOrderID=so.id
参加
客户c ON so.customerID=c.id
哪里

(orderDate>='2020-05-01'和orderDate您可以使用
行号()


使用
orderbyname
而不使用
c.
@Popeye:谢谢。另外,两种产品都没有显示。@LV98:好的,我修改了查询。我假设您在SaleOrderLine中有一个名为
product\u id
的列来标识一种产品。您可能需要检查一下。为什么customername2在同一日期有3条记录?
SELECT *
FROM (
    SELECT c.name, c.email, c.phone, sol.description, so.orderDate,
        RANK() OVER(PARTITION BY c.id, sol.product_id ORDER BY so.orderDate DESC) rn
    FROM SalesOrderLine sol
    JOIN SalesOrder so ON sol.salesOrderID = so.id
    JOIN Customer c ON so.customerID = c.id
    WHERE 
        orderDate >= '20200501' 
        AND orderDate <= '20200909'
        AND (description LIKE '%Seed Mix%' OR description LIKE '%Sesame Seeds (Natural)%')
) t
WHERE rn = 1
ORDER BY name
AND description IN ('Seed Mix', 'Sesame Seeds (Natural)')