2011-10-02 68 views
0

我希望在給定開始日期和結束日期的情況下,讓所有在同一天註冊和購買的客戶獲得。SQL Query查找在同一天註冊併購買的客戶

下面是模式:

用戶

--CustId 
--PostedDate 

訂購

--OrderId 
--CustId 
--PostedDate 

我如何編寫一個查詢拉當天登記,並在特定日期內購買的訂單?

+0

這些不是完整的模式。是PostedDate日期或日期時間字段? –

回答

1
SELECT DISTINCT 
    Users.CustId 
FROM 
    Users JOIN Order ON Users.CustId = Order.CustId 
WHERE 
    DATE(Users.PostedDate) = DATE(Order.PostedDate) 
    AND Users.PostedDate BETWEEN @start_date AND @end_date` 

這是假設PostedDate是日期時間,而不是日期字段。如果它實際上是一個日期字段,則DATE(Users.PostedDate) = DATE(Order.PostedDate)可以縮短爲Users.PostedDate = Order.PostedDate,然後WHERE子句的那部分可以成爲索引使用的候選。

+0

感謝richard.I感覺不好,因爲在發佈堆棧溢出問題之前,沒有多花些時間來找出解決方案。需要休息。 – Sam

0
SELECT * 
FROM Users, Order 
WHERE Users.CustId = Order.CustId AND 
     Users.PostedDate = Order.PostedDate 
+0

這是有效的。但說我需要找到誰在9/1/2011至2011年10月1日之間的同一日期註冊和購買的客戶。我怎麼做? – Sam

+0

@Sam:這會發現當天添加的訂單用戶註冊 – genesis

1

如何

SELECT u.CustId FROM Users AS u 
INNER JOIN Orders AS o 
ON u.CustId = o.CustId AND u.Posted Date = o.PostedDate 
WHERE u.PostedDate BETWEEN @Date1 AND @Date2 

希望這有助於。

0
SELECT u1.CustId FROM Users u1, Order o1 WHERE u1.CustId = o1.CustId AND 
    u1.PostedDate = o1.PostedDate and o1.PostedDate between 
    to_date('<startdate>','<oracleformat>') and to_date('fromdate','<>')+1 
相關問題