全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1313
推到 Plurk!
推到 Facebook!

如何取得子查詢條件的筆數

尚未結案
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-14 19:46:04 IP:203.73.xxx.xxx 未訂閱
請問我有一個訂單檔  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
        
------
Thomas Chiou
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-15 08:04:10 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-15 10:41:18 IP:203.73.xxx.xxx 未訂閱
大大你誤會我的意思了,我是希望在日期 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-15 11:28:34 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-16 12:34:47 IP:203.73.xxx.xxx 未訂閱
Fishman 這個方法似乎可以,但我的資料庫是用 mYSQL , 日期欄位可能因為有時間的關係,所以用 BETWEEN 好像有問題,不知是否有人知道該如何解決,因為我試了好久,還是試不出來 謝謝 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-16 14:20:38 IP:210.65.xxx.xxx 未訂閱
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
系統時間:2024-07-05 0:45:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!