史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2009-10-09, 03:47 PM   #1
chung1206 帥哥
註冊會員
 
chung1206 的頭像
榮譽勳章
UID - 322141
在線等級: 級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時
註冊日期: 2009-04-14
住址: Kaohsiung
文章: 192
精華: 0
現金: 121 金幣
資產: 521 金幣
預設 疑問 - access的sql查詢日期

各位先進們好,我在access有一個資料表,我想利用查詢將已超過一星期的訂單找出來,我的日期格式是98/10/10,請問在sql裡要怎麼寫?要先將它轉換成數字嗎?如果是,我轉了好久轉不出來,麻煩大大們不吝指教,謝謝。
chung1206 目前離線  
送花文章: 25, 收花文章: 108 篇, 收花: 261 次
回覆時引用此帖
舊 2009-10-12, 10:37 AM   #2 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

不曉得你的問題解決了沒...

(如果你的日期欄位, 格式是[日期]格式, 直接用下面的方式應該就可以了)
select * from 資料表 where 訂單日期 < #2009/3/3# - 7
select * from 資料表 where 訂單日期 < NOW - 7


如果你的日期欄位, 格式是[文字], 那就非常麻煩了
因為年度本身還有 3位數的問題(再2年就民國100年了)
而月份還有[1月] v.s [01月] 的問題
你得先確定文字的格式完完全全是 xxx/xx/xx
(年度是3位數, 月份一定是2位數, 日期也必須是2位數)
這樣才能夠用SQL指令去比對...
__________________
姜太公釣魚~ 願者上鉤
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
向 cwvdavid 送花的會員:
chung1206 (2009-10-12)
感謝您發表一篇好文章
舊 2009-10-12, 03:15 PM   #3 (permalink)
註冊會員
 
chung1206 的頭像
榮譽勳章
UID - 322141
在線等級: 級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時
註冊日期: 2009-04-14
住址: Kaohsiung
文章: 192
精華: 0
現金: 121 金幣
資產: 521 金幣
預設

感謝大大,我的問題已經解決了,但你的方法比較簡單明瞭,不過我現在還有一個問題就是,我不止想將超過一星期的單子調出來,我還要排除重覆的客戶名稱,不知道有沒有辦法?謝謝。
chung1206 目前離線  
送花文章: 25, 收花文章: 108 篇, 收花: 261 次
回覆時引用此帖
舊 2009-10-12, 04:53 PM   #4 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

select distinct 客戶名稱, 訂單日期 from 資料表 where 訂單日期 < NOW - 7

================
加上distinct 可以將 【完全重複】的整筆資料, 剔除到只剩1筆
如果你的欄位中有流水號, 那麼加上distinct也沒用(因為整筆記錄當中流水號不會重複)

例如:原本資料有...
客戶A, 2009/3/10
客戶B, 2009/3/11
客戶A, 2009/3/10
客戶C, 2009/3/10
客戶A, 2009/3/10
客戶C, 2009/3/12

則加上Distinct之後會剩下
客戶A, 2009/3/10
客戶B, 2009/3/11
客戶C, 2009/3/10
客戶C, 2009/3/12
(【客戶A, 2009/3/10】 有3筆完全相同,所以2筆被剔除)
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
舊 2009-10-12, 05:07 PM   #5 (permalink)
註冊會員
 
chung1206 的頭像
榮譽勳章
UID - 322141
在線等級: 級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時
註冊日期: 2009-04-14
住址: Kaohsiung
文章: 192
精華: 0
現金: 121 金幣
資產: 521 金幣
預設

再次感謝,其實我是想要查詢結單超過一星期但客戶沒有新訂單進來的方法,因為我們的東西會一直循環,算消耗品,所以我想追蹤客戶上次給我們做完後,超過一星期沒有再有新訂單進來,或許我一開始想法就錯了,還望大大指教,謝謝。
chung1206 目前離線  
送花文章: 25, 收花文章: 108 篇, 收花: 261 次
回覆時引用此帖
舊 2009-10-12, 05:42 PM   #6 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

所以你是要查...
超過1個星期都沒有訂單的客戶囉...


Select * from 客戶資料表
where 客戶ID not IN
( select distinct 客戶ID from 訂單資料表 where 訂單日期 < NOW - 7 )

找出客戶ID 【不在】 7天內進行下訂的
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
舊 2009-10-13, 01:54 AM   #7 (permalink)
註冊會員
 
chung1206 的頭像
榮譽勳章
UID - 322141
在線等級: 級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時
註冊日期: 2009-04-14
住址: Kaohsiung
文章: 192
精華: 0
現金: 121 金幣
資產: 521 金幣
預設

感謝大大,雖然我還是RUN不起來,不過我先用
SELECT *
FROM 客戶基本資料表
WHERE DateDiff("d",結單日期,Now())>7;
這個跑一陣看看有沒有問題再說,另外想再請教一個問題就是
我想把各個客戶的金額加總,但我不知道怎麼做升幂排列,我想
把加總起來金額由大排到小,以下是我的寫法,但不知怎麼排列
SELECT 客戶名稱, SUM(報價金額) AS [SUM(報價金額)]
FROM 客戶基本資料表
GROUP BY 客戶名稱;
麻煩您了,謝謝...
chung1206 目前離線  
送花文章: 25, 收花文章: 108 篇, 收花: 261 次
回覆時引用此帖
舊 2009-10-13, 02:52 AM   #8 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

引用:
作者: chung1206 查看文章
感謝大大,雖然我還是RUN不起來,不過我先用
SELECT *
FROM 客戶基本資料表
WHERE DateDiff("d",結單日期,Now())>7;
這個跑一陣看看有沒有問題再說,另外想再請教一個問題就是
我想把各個客戶的金額加總,但我不知道怎麼做升幂排列,我想
把加總起來金額由大排到小,以下是我的寫法,但不知怎麼排列
SELECT 客戶名稱, SUM(報價金額) AS [SUM(報價金額)]
FROM 客戶基本資料表
GROUP BY 客戶名稱;
麻煩您了,謝謝...


SELECT *
FROM 客戶基本資料表
WHERE DateDiff("d",結單日期,Now())>7;

這種寫法在普通情況下可以用,但如果你遇到【全新的客戶】
完全都還沒下過訂單,就會找不到了...

(如果一開始建立 客戶基本資料表 時,就有預設一個結單日期,
那就完全ok)
========================

在進行order by時,不能用別名...
也就是說,你設了一個 欄位,實際資料是【SUM(報價金額)】的時候,
排序時就必須照著寫【SUM(報價金額)】

而別名最好不要寫成【[SUM(報價金額)]】,
雖然也是可以...但不太建議...



SELECT 客戶名稱, SUM(報價金額) AS 加總金額
FROM 客戶基本資料表
GROUP BY 客戶名稱
order by SUM(報價金額);



SELECT 客戶名稱, SUM(報價金額) AS [SUM(報價金額)]
FROM 客戶基本資料表
GROUP BY 客戶名稱
order by SUM(報價金額);
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
舊 2009-10-13, 08:43 AM   #9 (permalink)
註冊會員
 
chung1206 的頭像
榮譽勳章
UID - 322141
在線等級: 級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時
註冊日期: 2009-04-14
住址: Kaohsiung
文章: 192
精華: 0
現金: 121 金幣
資產: 521 金幣
預設

感謝大大,升幂及降幂排列已解決,但之前那個問題,我是有設結單日期的,我有設建表日期及結單日期,但我實際去RUN時,很奇怪的是有些筆數明明在條件範圍之內,但竟然沒秀出來,倒不是直接出現錯誤訊息...這個我可能還要再想想
chung1206 目前離線  
送花文章: 25, 收花文章: 108 篇, 收花: 261 次
回覆時引用此帖
舊 2009-10-13, 08:52 AM   #10 (permalink)
註冊會員
 
chung1206 的頭像
榮譽勳章
UID - 322141
在線等級: 級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時
註冊日期: 2009-04-14
住址: Kaohsiung
文章: 192
精華: 0
現金: 121 金幣
資產: 521 金幣
預設

抱歉大大,剛才又發現了一個問題,結單日期超過一星期可用

SELECT *
FROM 客戶基本資料表
WHERE DateDiff("d",結單日期,Now())>7;

但結單日超過一個月似乎好像沒辦法再用

SELECT *
FROM 客戶基本資料表
WHERE DateDiff("d",結單日期,Now())>30;

是不是因為sql沒辦法計算誇月的問題?
chung1206 目前離線  
送花文章: 25, 收花文章: 108 篇, 收花: 261 次
回覆時引用此帖
舊 2009-10-13, 10:28 AM   #11 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

我都是直接用 [日期欄位] 減掉數字

select now - 10 as [10天前]
select now - 100 as [100天前]
select now - 200 as [200天前]

使用DateDiff...也可以(超過1個月也支援)
select DateDiff("D", #2009/1/1#, now()) as [天數差距]
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
舊 2009-10-13, 10:45 AM   #12 (permalink)
註冊會員
 
chung1206 的頭像
榮譽勳章
UID - 322141
在線等級: 級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時
註冊日期: 2009-04-14
住址: Kaohsiung
文章: 192
精華: 0
現金: 121 金幣
資產: 521 金幣
預設

大大您好,我是想查詢結單日期過一個月的客戶資料,但我每個結單日期都不一樣,我的方式是

SELECT *
FROM 客戶基本資料表
WHERE DateDiff("d",結單日期,Now())+30;

但好像不管用=.=
chung1206 目前離線  
送花文章: 25, 收花文章: 108 篇, 收花: 261 次
回覆時引用此帖
舊 2009-10-13, 06:13 PM   #13 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

where DateDiff("d",結單日期,Now())+30 ???

假設 DateDiff("d",結單日期,Now()) 的結果是50...

那你的判斷式就是..
SELECT * FROM 客戶基本資料表 where 80


(where 80.......並沒有判斷行為.......)
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
舊 2009-10-15, 01:45 PM   #14 (permalink)
註冊會員
 
chung1206 的頭像
榮譽勳章
UID - 322141
在線等級: 級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時級別:9 | 在線時長:134小時 | 升級還需:6小時
註冊日期: 2009-04-14
住址: Kaohsiung
文章: 192
精華: 0
現金: 121 金幣
資產: 521 金幣
預設

所以如果我想查詢2009/10/15前三十天的資料就輸入您教我的式子

select DateDiff("D", #2009/10/15#, now()) as 30

這樣就可以了嗎?但它怎麼知道我想查詢的是那個資料表呢?
chung1206 目前離線  
送花文章: 25, 收花文章: 108 篇, 收花: 261 次
回覆時引用此帖
舊 2009-10-15, 04:05 PM   #15 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

呃..............................................................

請改成下面的寫法...

SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now()) < 30
SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now()) > 30
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
疑問 - 請問如何在access的表單中建立查詢? ColgateNET 軟體應用問題討論區 1 2007-04-22 12:19 PM
疑問 - 請問可以把access匯成sql嗎? arnold0613 論壇程式討論區 2 2006-08-27 10:11 PM
請教關於Microsoft Access查詢 TJB 軟體應用問題討論區 6 2004-04-13 05:00 AM
Microsoft SQL & Microsoft Access jameswaco 軟體應用問題討論區 0 2003-03-21 01:09 AM


所有時間均為台北時間。現在的時間是 06:41 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1