2015-04-22 48 views
0

有人可以幫助我處理此查詢嗎?我想所有的customer_id的其中重複24小時創建sql查詢以在時間範圍內獲取重複列值

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和2日再次訂單在同一天04/23下午5:30與同一客戶Id xx一起發出。

我想查詢返回我的客戶ID XX

感謝

回答

2
select Customer_ID, CAST(DateOrdered as Date) DateOrdered, count(*) QTDE 
from Order_No 
group by Customer_ID, CAST(DateOrdered as Date) 
having count(*) > 1 

要得到誰擁有第一一個後發出訂單的客戶,那麼你可以使用下面的查詢:

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 

SQL Fiddle

要獲得有不止一個數量級的期間發行不超過24h或等於隨時爲所有客戶

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 

SQL Fiddle

+1

此查詢將如何在24小時內爲我提供所有客戶ID? – user3025605

+0

當你說24小時,你說的是同一天,或實際上24小時? – Nizam

+0

你是說最後24小時還是24小時? – Nizam

0

自連接:

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 

這將返回所有CUSTOMER_IDS在任何24小時的時間內都有多個訂單。

編輯添加匹配記錄不應該是相同的記錄的連接標準。應該返回同時放置兩個不同訂單的客戶,而不是放置一個訂單的客戶。

+0

這將在O和O2中返回相同的訂單。這就是爲什麼你需要有任何其他條件O.DateOrdered Nizam

+0

它只是返回不同的客戶ID,所以這應該不重要,但編輯,以消除負面的datediff結果無論如何。謝謝@nizam。 – APH

+1

看看我在說什麼http://sqlfiddle.com/#!6/deead/9。它是選擇1,2和3.我認爲它應該選擇1(http://sqlfiddle.com/#!6/deead/10) – Nizam