Sql server 创建sql查询以在时间范围内获取重复列值
有人能帮我解答这个问题吗?我想得到24小时内重复多次的所有客户id的结果Sql server 创建sql查询以在时间范围内获取重复列值,sql-server,sql-server-2008,Sql Server,Sql Server 2008,有人能帮我解答这个问题吗?我想得到24小时内重复多次的所有客户id的结果 SELECT O.Order_No, O.Customer_ID, O.DateOrdered, O.IPAddress, C.FirstName, C.LastName, CD.nameoncard FROM Order_No O INNER JOIN CardData CD ON O.card_id = CD.id INNER JOIN Customers C ON O.
SELECT
O.Order_No, O.Customer_ID, O.DateOrdered, O.IPAddress,
C.FirstName, C.LastName, CD.nameoncard
FROM
Order_No O
INNER JOIN
CardData CD ON O.card_id = CD.id
INNER JOIN
Customers C ON O.customer_id = C.customer_id
ORDER BY
O.order_no desc
添加更多详细信息。。
因此,假设客户id为xx的订单是在04/23下午2:30下的,同样的,第二个订单是在04/23下午5:30下的,客户id为xx
我希望查询返回我的客户Id xx
谢谢
要获取在第一个订单之后发出订单的客户,可以使用以下查询:
select distinct A.Customer_ID
from Order_No A
inner join (select Customer_ID, min(DateOrdered) DateOrdered from Order_No group by Customer_ID ) B
on A.Customer_ID = B.Customer_ID
and A.DateOrdered - B.DateOrdered <= 1
and A.DateOrdered > B.DateOrdered
获取任何时间内在少于或等于24小时内发出一个以上订单的所有客户
select distinct A.Customer_ID
from Order_No A
inner join Order_No B
on A.Customer_ID = B.Customer_ID
and A.DateOrdered > B.DateOrdered
and A.DateOrdered - B.DateOrdered <= 1
自连接:
SELECT distinct O.Customer_ID
FROM
Order_No O
inner join Order_No o2
on o.customerID = o2.customerID
and datediff(hour, o.DateOrdered, o2.DateOrdered) between 0 and 24
and o.Order_No <> o2.Order_No
这将返回在任何24小时内下过多个订单的所有客户ID
编辑以添加匹配记录不应为同一记录的联接条件。应退回同时下了两个不同订单的客户,但不能退回仅下了一个订单的客户 这个查询如何在24小时内获得所有客户id?当你说24小时时,你说的是同一天,或者实际上是24小时?你说的是最后24小时或任何24小时?是的,所以基本上,如果在第一次下订单的24小时内存在具有相同客户id的订单,这将返回O和O2中相同的订单。这就是为什么您需要有O.DateOrdered
SELECT distinct O.Customer_ID
FROM
Order_No O
inner join Order_No o2
on o.customerID = o2.customerID
and datediff(hour, o.DateOrdered, o2.DateOrdered) between 0 and 24
and o.Order_No <> o2.Order_No