如何取得子查詢條件的筆數 |
尚未結案
|
thomas0728
中階會員 ![]() ![]() ![]() 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
請問我有一個訂單檔 ORDER,當我下
SELECT * FROM ORDER WHERE CREATE_TIME>='2005/09/01' AND CREATE_TIME<='2005/09/10'; 時 我如何可以取得這些符合條件的訂單中,相同的人前後七天有下過多少筆訂單 我試著這下語法 SELECT BI.*,ORDER.COUNT(*) FROM ORDER AS BI WHERE BI.CREATE_TIME>='2005/09/01' AND BI.CREATE_TIME<='2005/09/10' left join order as order1 on bi.member_no=order1.member_no and order1.Create_Time in (select count(*) from order where order1.create_time>bi.create_time-7 and order1.create_time
------
Thomas Chiou |
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi thomas0728,
SELECT * FROM ORDER WHERE CREATE_TIME >='2005/10/01' AND CREATE_TIME<='2005/10/10' -- 實際統計區間 AND CUSTOMER_NO IN (SELECT DISTINCT CUSTOMER_NO FROM ORDER WHERE CREATE_TIME>='2005/09/01' AND CREATE_TIME<='2005/09/10') -- 於某區間內有下單之客戶清單以上述 SQL Command 為例,即已 09/01 到09/10 曾經下單之客戶,統計其於 10/01 到 10/10 間下單內容(前提是訂單中必須有客戶欄位,一般應該都會有)
------
Fishman |
thomas0728
中階會員 ![]() ![]() ![]() 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
大大你誤會我的意思了,我是希望在日期 2005/09/01 至 2005/09/20 間的資料
,另外還能多一個欄位用來表示在這些資料中的客戶,在前後七天還有多少其他筆數的資料 select bi.*,order.count(*) from order where create_time>= 2005/09/01 and create_time<=2005/09/20 left join order as order on bi.member_no=order.member_no and order.craete_time>=bi.cerate_time-7 and order.craete_time<=bi.cerate_time 7 其中 create_time 為訂單日期 如果愛情也有味覺
那麼 有沒有ㄧ種愛
微微泛酸 不太苦澀 有點甜密
嚐起來的滋味讓人想起幸福
Thomas Chiou
------
Thomas Chiou |
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi thomas0728, Sorry for my misunderstanding. Correct as follows, hope helpful !!
SELECT T.*, (SELECT COUNT(*) FROM ORDER T1 WHERE T1.MEMBER_NO = T.MEMBER_NO AND T1.CREATE_TIME BETWEEN T.CREATE_TIME - 7 AND T.CREATE_TIME 7) AS ORDER_COUNT FROM ORDER T
------
Fishman |
thomas0728
中階會員 ![]() ![]() ![]() 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi thomas0728 , MySQL 不太熟,無法給你進一步的 SQL Command 根據以往資料庫經驗,方法大致上有兩種 1.將 DateTime 全部轉成相同格式文字進行比較(需注意月份與日期前置零的問題),轉換時將時間去除掉只取年月日進行比較 2.將 BETWEEN ... AND ... 中的 DATETIME 時間去除掉,並將後面的日期加上 0.99999
T1.DT BETWEEN TRUNC(T.DT+7) AND TRUNC(T.DT-7) + 0.99999 //此函數為Oracle的用法,是我常用的方法 希望有幫助!
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |